簡體   English   中英

C:從文件讀取時出現分段錯誤

[英]C: Segmentation Fault when reading from a file

我最近開始從事這個項目,但在將某些內容讀入全局變量時遇到了麻煩。 這是使用pthread進行練習的原因,這就是為什么我首先使用全局變量的原因。 該程序應該從表示已解決的數獨難題的文件中讀取數字,並且文本文件將使用9個數字字符和9次換行格式設置。 我確保在運行該程序時,文件的格式是這樣的。 我知道我的代碼的這一段包含分段錯誤,但我不知道在哪里。 我只能假定它與fgets()有關。 但是,我查找的所有資源中都沒有任何東西會讓我覺得我使用的不正確。 當我訴諸使用fgetc時,它甚至會執行此操作,一次讀取一次,使fgetc會返回一個int,這與fgets將字符串分配給變量(在本例中為s)不同。

除非確定無法找到它,否則我不會將它帶到堆棧溢出中。 我一直在梳理代碼一個小時,試圖找到此段錯誤,對我來說這沒有任何意義。 我知道Seg Fault就在這里,因為它緊隨其后,應該打印出整個拼圖矩陣,但是並沒有那么遠。

int main(int argc, char *argv[]) {

    FILE* puzzlefile;
    char s[10];
    int i=0, j=0, skip;
    //open the file passed in via command line
    puzzlefile = fopen(argv[1], "r");

    for (i=0; i<9; i++){
        //get first string of 10 characters
        fgets(s,10, puzzlefile);
        for (j=0; j<9; i++){
            //read the numbers from s into the puzzle 2D
            //array, which takes ints. Ignore the 10th
            //character, which will be \n
            puzzle[j][i] = (int)(s[j]-'0');
        }
    }
    ...
}

您的問題似乎是這樣的:

  for (j=0; j<9; i++)
                 ^^^ 

這應該是j++ ,而不是i++

暫無
暫無

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

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