如何使用C在2D char数组中输入?

时间:2017-11-15 08:34:34

标签: c arrays

当我因某种原因尝试输入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

1 个答案:

答案 0 :(得分:1)

假设您输入如下输入:

  1. 一个
  2. 空白
  3. B'/ LI>
  4. 空白
  5. C
  6. 进入...
  7. 然后你的程序在输入缓冲区中有太多char个。您希望使用char阅读9 scanf("%c"),并且确实有9 char次进入缓冲区,但它们包含您不想要的内容(空格和换行符)。

    修复:在%c之前添加空格 - scanf(" %c",&a[i][j]);。这会忽略char s read('\n' '\t'" ' ')之间的任何类型的空格。