[英]what is wrong with this C program, file reading?
我正在編寫一個C程序,其中我必須將大文件讀入塊中(每個塊16個字符)。 為此,我編寫了以下代碼。
while(fgets(temp2,16,fp)!=NULL)
{
printf("\n%d:%s, len = %d", cnt++, temp2, strlen(temp2));
}
但是它只能讀取15個字符。 這有什么問題? 我該怎么辦?
這有什么問題?
沒有。 它正在按照您說的做。 除非遇到換行符或文件結尾,否則它將最多讀取15個字符,然后在最后寫入的字節之后立即以空終止該字節。
我該怎么辦?
char *fgets( char *str, int count, FILE *stream );
最多讀取
count - 1
從給定的文件流中讀取count - 1
字符,並將其存儲在str中。 產生的字符串始終以空值結尾。 如果發生文件結尾或找到換行符,則分析停止,在這種情況下,str將包含該換行符。
您可能想使用的是fread
,而不是fgets
,因為您的問題是關於讀取字符塊而不是換行符分隔的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.