我有以下读取字符矩阵并将其打印回来的实现。它运行正常,但是当我为它提供矩阵时,它会等待另一个字符,然后正确输出矩阵。如何修复它以便我不需要输入另一个字符?
示例输入
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");
}
}
提前致谢。
答案 0 :(得分:1)
尝试省略scanf中的空格(“%c”)。终端可能正在期待输入空间
答案 1 :(得分:1)
将空格放在 %c
之前。如果在%c
之后有空格,则scanf()将继续读取并忽略所有空格。因此,您被迫输入非空格字符。
变化:
scanf ("%c ", &bitmap[i][j]);
为:
scanf (" %c", &bitmap[i][j]);
答案 2 :(得分:0)
在打印字符之前,使用fflush(stdout);
可能有所帮助。 printf()
和scanf()
在使用时可能会出现问题。
答案 3 :(得分:0)
scanf ("%c", &bitmap[i][j]);
}
getchar();