1
我有這段代碼,不知道爲什麼我的輸出不正確。我已經習慣了C++使用不C.二維數組輸出值不正確
運行:./sudoku.o < inputfile中
int row = 8;
int col = 8;
int puzzle[row][col];
for (int r = 0; r < row; r++){
for (int c = 0; c < col; c++){
scanf("%d", &puzzle[r][c]);
}
}
for (int r = 0; r < row; r++){
for (int c = 0; c < col; c++){
printf("%d", puzzle[r][c]);
}
printf("\n");
}
這是我輸入
827154396
965327148
341689752
593468271
472513689
618972435
786235914
154796823
239841567
,這是我得到的輸出
-132765-84896035232594-208491627232765-208491623232765
00-84896120832594-84897084832594-85115713632594
10-848970848325941000
10-8489612083259400-208491648032765
1700966438000-84896035232594-208491641632765
-20846176001-208491643232765-163754450041951850
-1000-85506816832594-84897220032594
0000-20849160083276500
您已經沒有檢查'scanf()'的返回值。你應該。 (你可以使用'if(scanf(「%d」,&puzzle [r] [c])!= 1){... report error ...}')。 –
我該怎麼做? –
但是,您真正的問題是您想讀取1位數字,但是您的代碼會讀取9位數字,直到您用完輸入。您需要使用'「%1d」'將輸入限制爲單個數字。如果你測試了'scanf()'的結果,你會發現這個麻煩,因爲在你的輸入循環完成之前它會說EOF。 –