簡體   English   中英

這個C程序,文件讀取有什么問題?

[英]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個字符,然后在最后寫入的字節之后立即以空終止該字節。

我該怎么辦?

閱讀fgets參考 ,其中指出:

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

最多讀取count - 1從給定的文件流中讀取count - 1字符,並將其存儲在str中。 產生的字符串始終以空值結尾。 如果發生文件結尾或找到換行符,則分析停止,在這種情況下,str將包含該換行符。

您可能想使用的是fread ,而不是fgets ,因為您的問題是關於讀取字符塊而不是換行符分隔的字符串。

閱讀fgets文檔。 它正在讀一行

如果您的文件是二進制文件(請使用fopen("/path/to/file","rb")打開它),並且您關心固定大小的塊,請使用fread

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM