read()函数
最新推荐文章于 2024-03-26 09:54:14 发布
原创最新推荐文章于 2024-03-26 09:54:14 发布·6.1k 阅读
9·
·
0
·
0
9·CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
本文详细介绍了使用C语言进行文件读取的多种方法,包括单次读取固定字节数、循环读取直至文件结束及分块读取大数据文件等。通过具体代码示例,展示了如何利用read函数高效地从文件中读取数据。#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#define SIZE 1024int main1(){int fd = open("test.c", O_RDONLY);if (-1 == fd){perror("打开test.c文件失败");return -1;}char buf[11];// ssize_t read(int fd, void *buf, size_t count);// fa:文件描述符// buf:用于临时存放读到的数据// 10:欲读取得字节数// ret:实际读到得字节数、类型为长整型// read()会把参数fd所指的文件传送nbyte个字节到buf指针所指的内存中。// 若参数nbyte为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,// 如果返回0,表示已到达文件尾或无可读取的数据。错误返回-1,并将根据不同的错误原因适当的设置错误码。// ssize_t read(int fd, void *buf, size_t count);ssize_t ret = read(fd, buf, 10);if (-1 == ret){perror("读失败");return -1;}printf ("读到的字节数:%ld, 读到的内容:%s\n", ret, buf);// 成功返回0,出错返回-1并设置errno参数,fd是要关闭的文件描述符。需要说明的是,// 当一个进程终止时,内核对该进程所有尚未关闭的文件描述符调用close关闭,// 所以即使用户程序不调用close,在终止时内核也会自动关闭它打开的所有文件close(fd);return 0;}int main2(){int fd = open("test.c", O_RDONLY);if (-1 == fd){perror("打开test.c文件失败");return -1;}char buf[SIZE+1];int count = 0;int ret = 0;while ((ret = read(fd, buf, SIZE)) != 0){if (-1 == ret){perror("读失败");return -1;}count++;buf[ret] = '\0';printf ("%s", buf);}printf ("文件读结束, 读了 %d 次\n", count);close(fd);return 0;}// 读一个完整的大数据int main(){int fd = open("test.c", O_RDONLY);if (-1 == fd){perror("打开test.c文件失败");return -1;}char buf[SIZE+1];char *p = buf;int count = SIZE;while (count){int ret = read(fd, p, count);if (-1 == ret){perror("读取数据失败");return -1;}printf ("ret = %d\n", ret);count -= ret;p += ret;}buf[SIZE] = 0;printf ("%s",buf);close(fd);return 0;}
参与评论您还未登录,请先登录后发表或查看评论
03-04
4129
4129









































