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

时间:2017-12-09 06:14:17

标签: 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]);
            }

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

    }

输出:

a b c d

a b

进程返回0(0x0)执行时间:3.965秒 按任意键继续。

1 个答案:

答案 0 :(得分:1)

因为他们正在存储,其中两个就是空间。这就是你没有看到它们的原因。

试试这个,你会明白的

printf("[%c]",a[i][j]);

要解决此问题,您可以执行此操作

scanf(" %c",&a[i][j]);

这会消耗两个字符输入之间的空格字符。

从标准: - 7.21.6.2

  

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

和这个

  

空白字符组成的指令由。执行   读取输入到第一个非空白字符(仍然存在   未读),或直到不再能读取任何字符。指令永远不会   失败。