read、write函数(七)
代码:
1 /* 2 #include <unistd.h> 3 ssize_t read(int fd, void *buf, size_t count); 4 参数: 5 - fd:文件描述符,open得到的,通过这个文件描述符操作某个文件 6 - buf:需要读取数据存放的地方,数组的地址(传出参数) 7 - count:指定的数组的大小 8 返回值: 9 - 成功: 10 >0: 返回实际的读取到的字节数 11 =0:文件已经读取完了 12 - 失败:-1 ,并且设置errno 13 14 #include <unistd.h> 15 ssize_t write(int fd, const void *buf, size_t count); 16 参数: 17 - fd:文件描述符,open得到的,通过这个文件描述符操作某个文件 18 - buf:要往磁盘写入的数据,数据 19 - count:要写的数据的实际的大小 20 返回值: 21 成功:实际写入的字节数 22 失败:返回-1,并设置errno 23 */ 24 #include <unistd.h> 25 #include <stdio.h> 26 #include <sys/types.h> 27 #include <sys/stat.h> 28 #include <fcntl.h> 29 30 int main() { 31 32 // 1.通过open打开english.txt文件 33 int srcfd = open("english.txt", O_RDONLY); 34 if(srcfd == -1) { 35 perror("open"); 36 return -1; 37 } 38 39 // 2.创建一个新的文件(拷贝文件) 40 int destfd = open("cpy.txt", O_WRONLY | O_CREAT, 0664); 41 if(destfd == -1) { 42 perror("open"); 43 return -1; 44 } 45 46 // 3.频繁的读写操作 47 char buf[1024] = {0}; 48 int len = 0; 49 while((len = read(srcfd, buf, sizeof(buf))) > 0) { 50 write(destfd, buf, len); 51 } 52 53 // 4.关闭文件 54 close(destfd); 55 close(srcfd); 56 57 58 return 0; 59 }