用fread函数获取文件内容的问题,急,在线等!

/*读取文件到指针变量*/
fseek(f,0,SEEK_END);
file_l=ftell(f);
fc=(char*)malloc((unsigned)file_l);
fseek(f,0,SEEK_SET);
fread(fc,file_l,1,f);
f是文件指针,file_l是文件长度,我是想吧文件中的文本读入到fc中,但是我每次读入到fc里面的内容总会在文本末尾添加乱七八糟的东西,如图:画出来的就是它自己填上去的,这是为何,怎么解决?

我认为是文件f的实际内容并没有file_l获得的数字那么长,导致的
建议在
fc=(char*)malloc((unsigned)file_l);
之后加上
memset(fc, 0, file_l); //需要导入#include<string.h>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-01
f需要有一个字符串的结束符号\0
一般需要:
fc=(char*)malloc((unsigned)file_l+1);
fseek(f,0,SEEK_SET);
fread(fc,file_l,1,f);
f[file_I] = '\0';
第2个回答  2011-08-01
我查了下该函数的参数,你出错的原因很明显:出现了乱码,也就是说分配了n个内存,赋值了1个,其他当然乱码,
问题在fread()的第二和3参数反了,第2个参数表示多少字节为单位,第3个为要写入多少字节,因此fread(fc,1,file_l,f)

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网