从文件里面读出1000个随机数,进行排序,再写到另一文件中。(考虑使用重定向dup/dup2)
来源:互联网 发布:ps修复软件下载 编辑:程序博客网 时间:2024/05/17 12:21
//// Created by Lin on 2017/11/7.//#include <stdlib.h>#include <unistd.h>#include <sys/fcntl.h>#include <time.h>#include <sys/stat.h>#include <cstdio>#define N 10/** * 从文件读入数据 * @param fd * @param num */void readFromFile(int fd,int num[]){ if(fd<0) return; int fid =dup(STDIN_FILENO); if(dup2(fd,STDIN_FILENO)<0 && close(fd)<0){ perror("1"); exit(1); }; for (int i = 0; i < N; ++i) { scanf("%d\n",&num[i]); } if(dup2(STDIN_FILENO,fd)<0 && dup2(fid,STDIN_FILENO)<0 && close(fid)<0){ perror("2"); exit(1); }}/** * 打印到文件 * @param fd * @param num */void printfToFile(int fd,int num[]){ int sout_fd = dup(STDOUT_FILENO); if(dup2(fd,STDOUT_FILENO)<0 && close(fd)<0){ perror("3"); exit(1); } for (int i = 0; i < N; ++i) { printf("%d\n",num[i]); } if(fflush(stdout)<0 && dup2(STDOUT_FILENO,fd)<0 && lseek(fd,0,SEEK_SET)<0){ perror("4"); exit(1); } dup2(sout_fd,STDOUT_FILENO); close(sout_fd);}/** * 插入排序 * @param num */void sort(int num[]){ for (int i = 1; i < N; ++i) { int t = num[i]; int j= i; while(t < num[j-1] && j-1>=0){ num[j] = num[j-1]; j--; } num[j] = t; }}int main(){ srand(time(NULL)); int nums[N]; int nin[N]; int fd = open("in", O_CREAT|O_RDWR,S_IRWXU); for (int i = 0; i < N; ++i) { nin[i] = rand()%2000; } printfToFile(fd,nin); int saved_fd = open("out",O_CREAT|O_TRUNC|O_WRONLY,S_IRWXU); if(fd<0 || saved_fd<0){ perror("Open"); } else{ printf("helloworld\n"); fflush(stdout); readFromFile(fd,nums); close(fd); sort(nums); printfToFile(saved_fd,nums); close(saved_fd); }}
阅读全文
0 0
- 从文件里面读出1000个随机数,进行排序,再写到另一文件中。(考虑使用重定向dup/dup2)
- 使用dup/dup2进行文件描述符重定向
- 文件描述符重定向---dup&dup2
- dup/dup2/dup3(输入文件描述符重定向)
- 文件描述符的重定向:dup/dup2
- linux—dup和dup2重定向文件描述符
- linux:文件描述符重定向dup&dup2
- 对输入文件描述符重定向函数dup/dup2
- Linux:dup/dup2 文件描述符重定向函数(有图有代码有真相!!!)
- linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向
- linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向
- linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向
- linux下用 dup dup2 文件描述符重定向函数 输入输出重定向
- linux --dup dup2 文件描述符重定向函数--输入输出重定向
- dup/dup2输出重定向
- Linux--重定向dup&&dup2
- 重定向之dup,dup2
- 文件重定向dup2函数
- 子查询
- IDEA构建一个mybatis项目
- SpringBoot
- 通过判断浏览器的userAgent,用正则来判断手机是否是ios(苹果)和Android(安卓)客户端
- 查看mysql库大小,表大小,索引大小
- 从文件里面读出1000个随机数,进行排序,再写到另一文件中。(考虑使用重定向dup/dup2)
- Windows 上的倒斜杠以及 OS X 和 Linux 上的正斜杠
- Jenkins入门系列之——02第二章 Jenkins安装与配置
- 视觉设计中发现的11种光学错觉
- Axure8.0
- VUE学习-环境搭建
- 《算法导论》11.3-3解答——k为按基数2^p表示的字符串。试证明:如果串x可由串y通过其自身的字符置换排列导出,则x和y具有相同的散列值。
- 基于Spring的 Redis工具类
- gdb调试Go,info goroutines