我在寫一個C程序,在我所讀取到的塊大文件(每塊16個字符)。爲此我寫了下面的代碼。這個C程序有什麼問題,文件讀取?
while(fgets(temp2,16,fp)!=NULL)
{
printf("\n%d:%s, len = %d", cnt++, temp2, strlen(temp2));
}
但它的讀數只有15個字符。這有什麼問題?我該怎麼辦?
我在寫一個C程序,在我所讀取到的塊大文件(每塊16個字符)。爲此我寫了下面的代碼。這個C程序有什麼問題,文件讀取?
while(fgets(temp2,16,fp)!=NULL)
{
printf("\n%d:%s, len = %d", cnt++, temp2, strlen(temp2));
}
但它的讀數只有15個字符。這有什麼問題?我該怎麼辦?
有什麼不對呢?
什麼都沒有。它正在做你說的。它會讀取多達15個字符,除非遇到新行或文件結束-,然後用空字符結束的最後一個書面剛過字節。
我應該怎麼辦?
閱讀reference for fgets
,其中規定:
char *fgets(char *str, int count, FILE *stream);
讀取str中指定的文件流,並將它們存儲在最
count - 1
字符。生成的字符串始終以null結尾。如果發生文件結尾或發現換行符,則停止解析,在這種情況下,str將包含該換行符。
你可能想用什麼fread
,不fgets
,因爲你的問題有關閱讀的字符塊,而不是換行分隔字符串會談。
上帝我討厭它,當電腦一直做我已經告訴它做的事情,但做錯了......嗯嗯.... –
它更糟糕的時候,它幾乎總是做什麼,我_think_我告訴它,並且只有經過幾個小時的故障排除後,纔會發現它正在做我實際上已經告訴它的事情......並且它似乎只是做了我認爲由於未定義的行爲而做的事情;-) – paddy