我想用c中的scanf來從用戶處獲取5x5矩陣輸入。例如,如果用戶輸入1 2 3 4 5 6 7 8 9 10,我想創建一個像這樣的二維數組:arr [0] [0] = 1,... arr [1] [0] = 6 ..等 輸入也可以換新行。從用戶處獲取矩陣輸入c
我嘗試這樣做:
int main() {
int arr[5][5]; eipus(arr);
char c; int r=0; int col=0;
while ((c=getchar()) != EOF) {
if (col >= 5) { col=0; r++; }
if (scanf("%d",&arr[r][col]) == 1) { col++; }
}
printArr(arr);
return 1;
}
eipus() - 陣列設置爲0。printArr - 打印陣列。
問題是它總是忽略第一個數字。例如:
[[email protected]]$ a.out
1 2 3 4 5 6 7 8
2 3 4 5 6
7 8 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
數字1被忽略。但是如果在1之前有一個空格,那沒關係。
'c = getchar()'丟棄讀取一個字符。 – BLUEPIXY
請通過http://stackoverflow.com/questions/23572964/getchar-or-putchar-keeps-eating-the-first-character-of-my-input – Codesingh