Movatterモバイル変換


[0]ホーム

URL:


read()函数

最新推荐文章于 2024-03-26 09:54:14 发布
原创最新推荐文章于 2024-03-26 09:54:14 发布·6.1k 阅读
· 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;}
确定要放弃本次机会?
福利倒计时
::

立减 ¥

普通VIP年卡可用
立即使用
参与评论您还未登录,请先登录后发表或查看评论

博客等级

码龄8年
70
原创
65
点赞
210
收藏
32
粉丝
关注
私信

热门文章

分类专栏

展开全部收起

上一篇:
write()函数
下一篇:
插入排序

大家在看

最新文章

目录

展开全部

收起

目录

展开全部

收起

上一篇:
write()函数
下一篇:
插入排序

目录

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
被折叠的  条评论为什么被折叠?到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

[8]ページ先頭

©2009-2025 Movatter.jp