#include<unistd.h> #include<stdio.h> #include<fcntl.h> #include<sys/types.h> #define SIZE 50 int main(void) { char buf[SIZE]={0}; //接收读取的东西的盒子 int ret = 0; // ret表示read读取的字节数 int retOpen =0; // 是open的返回值 也就是后面要用的文件描述符 retOpen = open("test.txt",O_RDONLY); if(retOpen<0) { perror("open error"); return -1; } while(1){ ret = read(retOpen,buf,SIZE-1); if(0 == ret) { printf("-----finished------\n"); break; }else if(0>ret) { perror("qweq"); break; } printf("读取到%d个字节\n",ret); //printf("%s",buf); write(STDOUT_FILENO,buf,ret); } //STDOUT_FILENO 代表的是 标准输出的 打印在屏幕上 write(STDOUT_FILENO,buf,ret); close(retOpen); return 0; }
打开一个文件,把它的内容输出到另一个文件中(不能是stdout)
提前创建 1.txt 里面需要有数据 2.txt 空的就好
/* 功能:打开一个文件,把它的内容输出到另一个文件中(不能是stdout). 作者:杨磊 */ #include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<fcntl.h> #define SIZE 256 int main() { //先定义一个buf接受read 的数据 char buf[SIZE]={0}; int fp = 0;//接收 open的返回值 作为后面的方法的文件指示符; 第一个文件 int fp1 = 0; //这是 需要写入的文件 int readret=0; fp = open("1.txt",0666); fp1 = open("2.txt",O_RDWR,777); if(fp < 0) { perror("error!"); return -1; } while(1) { readret = read(fp,buf,SIZE-1); if(0 == readret) { printf("--------finished--------\n"); break; }else if(0>readret) { perror("read error"); break; } write(fp1,buf,readret); } close(fp); close(fp1); }