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

在打印字符之前,使用fflush(stdout);可能会有所帮助。printf()当它们一起使用时,scanf()有时可能会出现问题。

于 2013-05-04T15:16:25.563 回答
0
        scanf ("%c", &bitmap[i][j]);
    }
    getchar();
于 2013-05-04T15:21:03.263 回答