【问题标题】:Scanf not taking input character [duplicate]Scanf不接受输入字符[重复]
【发布时间】:2017-04-16 12:54:18
【问题描述】:

这是我的代码,它将计数作为输入,然后将城市数量作为输入。
我想打印从该字母开始的所有城市,但程序在将字符作为输入之前结束。 但它不需要字符输入

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

char a[20][10];
char ch;
int i,n;

printf("Enter nos of cities\n");
scanf("%d",&n);
for ( i = 0; i < n ; i++)
{
    scanf("%s",a[i]);
}
printf("\n");

printf("Enter 1st character\n");
scanf("%c", &ch);
for ( i = 0; i < n ; i++)
    if(ch==a[i][0])
        printf("%s\n",a[i]);    


}

输出:

Enter nos of cities
3
asd
zxc
qw

Enter 1st character

【问题讨论】:

  • 谢谢解答
  • -1 表示没有研究问题。 SO上有很多重复的这个。除了解决您的问题之外,(1)使用标准int main(void) 而不是void main()。 (2) 检查n 是否不大于20。 (3) 限制scanf 的输入以避免缓冲区溢出:%9s (4) 检查scanf 的返回值。
  • '缓冲区换行'是新的'i++ + ++i' :((

标签: c


【解决方案1】:

使用scanf(" %c", &amp;ch);

将前一个输入的输入作为输入。所以在%c前加一个空格。

【讨论】:

    【解决方案2】:

    只需在第 15 行打印换行符后添加一行 getchar(); 因为 printf("\n")scanf 提供换行符。 getchar() 在这里跳过(吃掉)换行符。

    【讨论】:

      猜你喜欢
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2020-03-21
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多