fread读取已存在文件,尾部出现多余异常字符,求解答

qin153515513 2014-12-12 11:42:08
FILE *fp;
long lSize;
char *c;
size_t result;

fp=fopen(rbuf,"rb");
if(!fp)
{
printf("Can't open File abc.txt!");
}
fseek(fp, 0, SEEK_END);
lSize=ftell(fp);
rewind(fp);
c=(char *)malloc(sizeof(char)*lSize);
if(c==NULL)
{
printf("Memory error!");
}
result=fread(c,1,lSize,fp);
if(result!=lSize)
{
printf("Reading error!");
}

printf("%s",c);
fclose(fp);
free (c);
//前面的rbuf文件名是正确的,文件是.txt文件,内容是“我们是中国人,我们爱自己的祖国!”。
输出的结果如图:
...全文
363 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfbmm 2014-12-13
  • 打赏
  • 举报
回复
c=(char *)malloc(sizeof(char)*(lSize + 1)); c[lSize] = 0; 这样就正常了。
qin153515513 2014-12-13
  • 打赏
  • 举报
回复
恩,解决了,谢谢
zacharyLiu 2014-12-12
  • 打赏
  • 举报
回复

memset(c,0, lSize);
赵4老师 2014-12-12
  • 打赏
  • 举报
回复
printf("%s",c); 应改为 printf("%.*s",lSize,c);
qin153515513 2014-12-12
  • 打赏
  • 举报
回复
可以啊,以前没见过这种输出方式,有其他简单一点的方法改正吗,为什么会出现这样的结果啊
赵4老师 2014-12-12
  • 打赏
  • 举报
回复
2楼方法比较笨。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧