作为C语言新手,尝试通过fread读取文件。
这是文件的内容:
line1 how
使用的代码:
char c[6];
fread(c,1,5,f1)
输出变量 'c' 时,内容末尾会出现一个随机字符(例如:line1*)
fread() 函数没有终止字符串或者我漏掉了什么吗?
不可以。fread
函数只是简单地读取一定数量的元素,它没有字符串的概念。
fgets
/fscanf
个人建议使用fgets
。
对不起,我来晚了。
不,fread不会为您处理这个。必须手动完成。 幸运的是,这并不难。 我喜欢使用fread()的返回值来设置NUL,就像这样:
char buffer[16+1]; /*leaving room for '\0' */
x = fread(buffer, sizeof(char), 16, stream);
buffer[x]='\0';
现在,您已经拥有了一个以\0结尾的字符串。更妙的是,我们还有一个非常方便的变量x,如果以后需要使用strlen()函数,它可以省去我们的麻烦。太棒了!
fread
只能读取字节到缓冲区中,它并不知道你所谓的字符串是什么。 - Dan D.