免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4357 | 回复: 7
打印 上一主题 下一主题

fread(buffer,size,count ,fp) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-31 20:36 |只看该作者 |倒序浏览
fread()和fwrite()是否可以一次读入到内存大块的数据,或从内存中读出大块的数据?(例:4K以上)
不能的话,怎样读出大块的数据?谢谢。
我机器用Linux系统,

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2007-03-31 20:48 |只看该作者
为什么一次要读取大量的数据, 有什么必须这么做的原因么? 或者你只是纯粹的想知道?

论坛徽章:
0
3 [报告]
发表于 2007-04-01 11:01 |只看该作者
可以的
这种问题很容易写个小程序验证。
打开一个很大的文件。
fread就可以了

read好像会有个限制,不过也很大,fread应该就没有限制了。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2007-04-01 12:36 |只看该作者
原帖由 flw2 于 2007-4-1 11:01 发表
read好像会有个限制,不过也很大,fread应该就没有限制了。


fread/fwrite 是 C 标准库中的函数, 可以是正常的. 但楼主的意思好像是不经缓冲一次读写大量数据. 当然, 可能是我理解错了. 因此我一直很好奇楼主为什么要强调一次读写大量数据. 需要大量数据, 即使不能一次读入, 多次读入将其结果并在一起也应该可以达到目的. 当然, 往文件中写就是另外一回事情了.

最终, 还是没搞清楚楼主到底想干吗...

[ 本帖最后由 MMMIX 于 2007-4-1 12:37 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-04-01 17:05 |只看该作者
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>

  4. int main()
  5. {
  6.         int len = 4 * 1024 * 1024;      // 4M
  7.         char *buf = calloc(len, sizeof(char));
  8.         FILE *fp_src, *fp_dst;
  9.         char *fsrc = "srcfile";
  10.         char *fdst = "dstfile";

  11.         fp_src = fopen(fsrc, "w");
  12.         fwrite(buf, sizeof(char), len, fp_src);

  13.         fclose(fp_src);
  14.         fp_src = fopen(fsrc, "r");
  15.         fp_dst = fopen(fdst, "w");

  16.         fread(buf, sizeof(char), len, fp_src);
  17.         fwrite(buf, sizeof(char), len, fp_dst);

  18.         return 0;
  19. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2008-06-27 11:01 |只看该作者

回复 #5 berlin860 的帖子

好帖!
验证了,dstfile srcfile的内容是空的

[ 本帖最后由 nx008 于 2008-6-27 13:59 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2008-06-27 11:03 |只看该作者
超过 4K 意义就不大了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2008-06-27 13:05 |只看该作者
我们公司做的一次读8K ..发包的时候也是一次发8K
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP