【问题标题】:how to take input in a 2D char array using C? [duplicate]如何使用 C 在二维字符数组中输入? [复制]
【发布时间】:2017-11-15 08:34:33
【问题描述】:

当我出于某种原因尝试输入 2D char 数组时,我得到了奇怪的结果。过去我一直采用这种方式获取整数二维数组,但不知何故,这种方法不适用于 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 我

预期输出

a b c

d e f

g h 我

会发生什么:

3

a b c

d e f

(输入突然停止)

输出:

a b c

d

【问题讨论】:

  • 您能否详细说明“不起作用”部分? 如何不起作用?你的输入是什么?你的预期输出是什么?实际输出是多少?请read about how to ask good questions。也请learn how to debug your programs.
  • 你输入了什么,你得到了什么,这与你的预期有何不同?
  • 你可能想要scanf("%c\n",&amp;a[i][j])(最后是'\n'
  • @BarmakShemirani 最好在格式之前添加一个空格。否则最后的scanf 调用将阻塞,直到输入非空格字符。
  • @某个程序员老兄,对。我认为它根本不需要\n,只需" %c"

标签: c arrays


【解决方案1】:

假设您像这样插入输入:

  1. 一个
  2. 空格
  3. b
  4. 空格
  5. c
  6. 输入...

那么您的程序在输入缓冲区中有太多chars。您想读取 9 charscanf("%c") 并且确实 9 chars 进入缓冲区,但它们包含您不想要的东西(空格和换行符)。

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

【讨论】:

  • 像魅力一样工作!非常感谢:)
猜你喜欢
  • 2022-06-16
  • 2013-01-10
  • 1970-01-01
  • 2021-07-02
  • 2010-10-16
  • 2021-11-17
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多