我正在写一个C程序,其中我必须读取一个大文件到块(每个块16个字符).为此我写了以下代码.
while(fgets(temp2,16,fp)!=NULL)
{
printf("\n%d:%s, len = %d", cnt++, temp2, strlen(temp2));
}
Run Code Online (Sandbox Code Playgroud)
但它的阅读只有15个字符.这有什么问题?我该怎么办?
这有什么问题?
没有.它正在做你告诉它的事情.它将读取最多15个字符,除非它遇到换行符或文件结束,然后在写入最后一个字节之后将该字节空终止.
我该怎么办?
阅读参考资料fgets,其中指出:
char *fgets( char *str, int count, FILE *stream );
count - 1从给定的文件流中读取大多数字符并将它们存储在str中.生成的字符串始终以空值终止.如果发生文件结束或找到换行符,则解析将停止,在这种情况下,str将包含该换行符.
您可能想要使用的fread不是fgets,因为您的问题涉及读取字符块而不是换行符分隔的字符串.