[英]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.