C 为什么它只存储两个字符而不是4个?

C 为什么它只存储两个字符而不是4个?,c,C,这是我的代码: #include<stdio.h> int main() { char a[10][10]; int i,n,m,j; n=2; m=2; for(i=0;i<n;i++) for(j=0;j<m;j++) { scanf("%c",&a[i][j]);

这是我的代码:

 #include<stdio.h>
    int main() 
    {

        char a[10][10];

        int i,n,m,j;

        n=2;
        m=2;


        for(i=0;i<n;i++)
            for(j=0;j<m;j++)
            {
                scanf("%c",&a[i][j]);
            }

        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                printf("%c",a[i][j]);
            }
        }

    }
#包括
int main()
{
字符a[10][10];
int i,n,m,j;
n=2;
m=2;

对于(i=0;i,因为它们在存储,其中两个是空间。这就是为什么你看不到它们

试试这个,你就会明白

printf("[%c]",a[i][j]);
要解决这个问题,您可以这样做

scanf(" %c",&a[i][j]);
这将消耗两个字符输入之间的空白字符

来自标准:-7.21.6.2

输入空白字符(由isspace函数指定) 跳过,除非规范包含a[、c或n说明符

还有这个

空白字符组成的指令由 读取输入直到第一个非空白字符(保留 未读),或直到无法读取更多字符。该指令永远不会 失败了


我不知道你在问什么,请清楚地更新你的问题。
scanf(“%c”
@RetiredNinja感谢您的帮助,现在我清楚地理解了它。@LalitVerma.:是的,因为
'
匹配它。scanf有点像解析器。很抱歉回复太晚。@LalitVerma.:我提到了标准解释的相关部分,感谢您@coderredoc澄清了这个疑问,现在我明白了。