0

文字マトリックスを読み取り、それを出力する次の実装があります。正常に動作しますが、マトリックスを指定すると、別の文字を待ってからマトリックスを適切に出力します。別の文字を入力する必要がないようにするにはどうすれば修正できますか?

サンプル入力

3 4
0001
0110
1110

サンプル出力

0001
0110
1110

私のコード

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, m; /* n, m - dimensions of matrix */
    int i, j; /* i, j - iterators */
    char **matrix; /* matrix - matrix input */
    scanf ("%d %d\n", &n, &m);
    matrix = (char **) malloc (sizeof (char *) * n);
    for (i = 0; i < n; ++i)
    {
        matrix[i] = (char *) malloc (sizeof (char) * m);
    }
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
        {
            scanf ("%c ", &matrix[i][j]);
        }
    }
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
        {
            printf ("%c", matrix[i][j]);
        }
        printf ("\n");
    }
}

前もって感謝します。

4

4 に答える 4

1

の前 にスペースを入れ%cます。の後に空白がある場合%c、scanf() はすべての空白を読み取り、無視し続けます。したがって、空白以外の文字を入力する必要があります。

変化する:

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

に:

        scanf (" %c", &bitmap[i][j]);
于 2013-05-04T15:16:43.053 に答える
1

scanf("%c ") でスペースを省略してみてください。端末は入力用のスペースを期待している可能性があります

于 2013-05-04T15:03:34.487 に答える
0
        scanf ("%c", &bitmap[i][j]);
    }
    getchar();
于 2013-05-04T15:21:03.263 に答える