-1

文字の M*N 配列を読み込もうとしていますが、配列を印刷すると奇妙な文字が表示されます。コードの何が問題なのかわかりませんでした。ここで何が欠けていますか?

int i,j,m,n;
char mat[10][10]
printf("N=");
scanf("%d", &n);
printf("M=");
scanf("%d", &m);
fflush(stdin);
// Read array elements, one by one
for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    {
        printf("mat[%d][%d]=", i+1, j+1);
        scanf("%c", &mat[i][j]);
        fflush(stdin);
    }
// Print matrix
putchar('\n');
for (i=0; i<n; i++);
{
    for (j=0; j<m; j++)
        printf("%2c", mat[i][j]);
    putchar('\n');
}

入力/出力の例:

N=2
M=2
mat[1][1]=1
mat[1][2]=A
mat[2][1]=2
mat[2][2]=B

 ╥ ⌠
1
4

3 に答える 3

3

char mat[10][10]->char mat[10][10];

for (i=0; i<n; i++);->for (i=0; i<n; i++)

/* delete
for (i=0; i<(n-1); i++)
    for (j=0; j<i+1; j++)
        printf("%c ", mat[i][j]);
*/
于 2013-04-21T14:42:40.210 に答える
2

君の

scanf("%c", &mat[i][j]);

改行をキャッチしています。フォーマットの先頭に空白を追加する

scanf(" %c", &mat[i][j]);
于 2013-04-21T14:36:39.563 に答える