【发布时间】:2013-04-21 14:32:06
【问题描述】:
我正在尝试读取 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
【问题讨论】:
-
fflush(stdin);是未定义的行为。这是否是您的问题取决于您使用的实现。还有,打印出了什么奇怪的字符? -
我添加了 fflush(stdin),因为有时输入流中仍有换行符,这可能会干扰 scanf()。
-
我猜到了。但正如我所说,这是未定义的行为,它并不适用于任何地方。如果您不想接受空格作为输入,则可以在格式字符串中添加空格以跳过初始空格。如果这样做,如果您希望它可移植,则必须使用
getchar()循环清除输入缓冲区直到换行。
标签: c arrays multidimensional-array char