簡體   English   中英

讀取文件並使用fscanf進入無限循環

[英]Reading a FILE and using fscanf goes into an infinite loop

這是給出要掃描的文件的函數:

void scan(FILE *file) {

    while (true) {
        char s1[1001];
        int result = fscanf(file, "%10s", s1);
        printf("%d\n", result);
        s1[1001] = '\0';
        if (result == EOF) break;
    }


}

我在將文件傳遞給此函數之前使用fopen。 它在無限循環中打印出-1,但它不會中斷。 怎么會?

s1強制null終止符時,你有一個off-by-one錯誤,這個:

s1[1001] = '\0';

運行超過s1的結尾,它應該是:

s1[1000] = '\0';

當你在C中聲明一個數組為char s1[X]; X是數組中元素的數量,由於C數組從零開始索引,最后一個元素是s1[X-1]

該關閉的情況的一個可以改變的值result之間printfresult == EOF檢查。

我想這取決於什么是s1

確保它是char s1[ appropriate_size ]而不是char * s1

它在我的案例中工作得很好: 測試

暫無
暫無

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

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