我想扫描一个字符数组作为输入,如下所示,我也希望得到用户的行数(它是一个方阵)。
O O X
O X O
O O X
但是当我使用下面的程序扫描它时,它只扫描两行。
#include <stdio.h>
int main()
{
int size,i,j;
printf("Enter size");
scanf("%d",&size);
int a[size][size];
for(i=0;i<size;i++)
for(j=0;j<size;j++)
scanf("%c",&a[i][j]);
}
我得到的输出是:
输入尺寸3
O O X
O X O
然后它没有要求最后一行。
答案 0 :(得分:2)
请记住,这里不会跳过空格。
这会修复它,它也消耗空白:
scanf(" %c",&a[i][j]);
答案 1 :(得分:2)
抱歉,我没有足够的声誉发表评论。除了Yohannes的回答,请考虑您期望的输入类型。您使用整数数组来存储值,但是告诉scanf
期望具有"%c"
的字符。也许使用字符数组或取整数作为输入,并从编译器中删除类型不匹配警告。
scanf("%d",&a[i][j]);
读取整数