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