当我因某种原因尝试输入2D char 数组时,我得到了奇怪的结果。我总是以这种方式使用整数2D数组,但不知何故,这种方法对于char数组不起作用。
#include <stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
char a[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%c",&a[i][j]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%c",a[i][j]);
}
return 0;
}
例外输入:
3
a b c
d e f
g h i
预期输出:
a b c
d e f
g h i
会发生什么:
3
a b c
d e f
(输入突然停止)
输出:
a b c
d
答案 0 :(得分:1)
假设您输入如下输入:
然后你的程序在输入缓冲区中有太多char
个。您希望使用char
阅读9 scanf("%c")
,并且确实有9 char
次进入缓冲区,但它们包含您不想要的内容(空格和换行符)。
修复:在%c之前添加空格 - scanf(" %c",&a[i][j]);
。这会忽略char
s read('\n' '\t'" ' '
)之间的任何类型的空格。