这个C程序有什么问题,文件读取?

1 c file

我正在写一个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个字符.这有什么问题?我该怎么办?

pad*_*ddy 5

这有什么问题?

没有.它正在做你告诉它的事情.它将读取最多15个字符,除非它遇到换行符或文件结束,然后在写入最后一个字节之后将该字节空终止.

我该怎么办?

阅读参考资料fgets,其中指出:

char *fgets( char *str, int count, FILE *stream );

count - 1从给定的文件流中读取大多数字符并将它们存储在str中.生成的字符串始终以空值终止.如果发生文件结束或找到换行符,则解析将停止,在这种情况下,str将包含该换行符.

您可能想要使用的fread不是fgets,因为您的问题涉及读取字符块而不是换行符分隔的字符串.