C语言printf大文件

[复制链接]
 楼主| crazy2012 发表于 2013-9-13 23:25 | 显示全部楼层 |阅读模式
现在有个5M大小的TXT文件,想用printf的方法把TXT内容打印出来,发现下面的方法不能打印大文件,只能打印小点的文件,这个是什么情况。



当然我有修改过buf的大小,发现都不是很奏效啊。
  1. #include <stdio.h>
  2. char buf[1024];


  3. void main(void)
  4. {
  5.         FILE *pf=fopen("copy.c","rb");
  6.         

  7.         
  8.         while(!feof(pf))
  9.         {
  10.                 memset(buf,0,1024);
  11.                 fread(buf,1,1024,pf);
  12.                 printf("%s",buf);
  13.         }
  14.         
  15.         fclose(pf);
  16. }


夏了个夏天 发表于 2013-9-14 08:00 | 显示全部楼层
ayb_ice 发表于 2013-9-14 09:07 | 显示全部楼层
这个真不懂
ipman 发表于 2013-9-14 20:37 | 显示全部楼层
单片机?还是x86?
 楼主| crazy2012 发表于 2013-9-14 21:42 | 显示全部楼层
ipman 发表于 2013-9-14 20:37
单片机?还是x86?

PC机。
 楼主| crazy2012 发表于 2013-9-14 21:43 | 显示全部楼层
ipman 发表于 2013-9-14 20:37
单片机?还是x86?

想读取文件,然后通过串口发送出去。现在问题是文件大了,就不行了,文件小还可以。
hzhmcu 发表于 2013-9-14 22:56 | 显示全部楼层
fread(buf,1,1024,pf);
printf("%s",buf);
这个不是一个字符串结尾,是打不也来的。没有'/0'结尾

评分

参与人数 1威望 +6 收起 理由
原野之狼 + 6 赞一个!

查看全部评分

 楼主| crazy2012 发表于 2013-9-14 23:06 | 显示全部楼层
hzhmcu 发表于 2013-9-14 22:56
fread(buf,1,1024,pf);
printf("%s",buf);
这个不是一个字符串结尾,是打不也来的。没有'/0'结尾 ...

你说的意思是说,printf必须打印以/0结尾的字符串?
hzhmcu 发表于 2013-9-16 08:35 | 显示全部楼层
crazy2012 发表于 2013-9-14 23:06
你说的意思是说,printf必须打印以/0结尾的字符串?

这个是必须的,你自己查一下相应的资料
 楼主| crazy2012 发表于 2013-9-16 09:21 | 显示全部楼层
hzhmcu 发表于 2013-9-14 22:56
fread(buf,1,1024,pf);
printf("%s",buf);
这个不是一个字符串结尾,是打不也来的。没有'/0'结尾 ...

我现在的猪妖目的是读取大文件,然后写入到串口。当然printf是为了监控下到底发了什么数据。所以需要printf下。
 楼主| crazy2012 发表于 2013-9-16 09:27 | 显示全部楼层
hzhmcu 发表于 2013-9-16 08:35
这个是必须的,你自己查一下相应的资料

那按照这个道理,我想打印这个5M的文件,岂不是得需要开辟一个5M的buffer,然后用printf一次性打印出来?
hzhmcu 发表于 2013-9-16 11:49 | 显示全部楼层
crazy2012 发表于 2013-9-16 09:27
那按照这个道理,我想打印这个5M的文件,岂不是得需要开辟一个5M的buffer,然后用printf一次性打印出来? ...

我对上位机不熟,不是你这个文件是否有'/0'的。如果没有,你可以在buffer后自己强加一下'/0'
您需要登录后才可以回帖 登录 | 注册

本版积分规则

150

主题

939

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部

150

主题

939

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部