私はscanfを使って5x5行列入力をcで取りたいと思います。たとえば、ユーザタイプが1 2 3 4 5 6 7 8 9 10の場合、arr [0] [0] = 1、... arr [1] [0] = 0のような2次元配列を作成したい場合は、 6 ..等 入力も新しい行で行うことができます。ユーザからの行列入力を受け取りました
私はこれを試みた:
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の前にスペースがあればOKです。
'c = getchar()'は1文字を破棄します。 – BLUEPIXY
http://stackoverflow.com/questions/23572964/getchar-or-putchar-keeps-eating-the-first-character-of-my-input – Codesingh