【问题标题】:Second scanf is not working第二个scanf不起作用
【发布时间】:2010-10-26 12:29:44
【问题描述】:

我在使用这个 c 语言代码时遇到了问题:

 char st[2];

 printf("enter first value:");
 scanf("%c", &st[0]);

 printf("enter second value:");
 scanf("%c", &st[1]);

所以我的电脑没有要求我输入第二个值,我的意思是说它只打印第一个printf 语句然后我输入一个字符然后它只打印第二个printf 语句和程序结束不接受第二个输入。

请帮忙。这段代码有什么问题?

-提前致谢。

【问题讨论】:

标签: c


【解决方案1】:

确实如此。 ENTER 键生成的字符已经存在于缓冲区中。

【讨论】:

    【解决方案2】:

    我认为您的问题是第二次 scanf 正在接收“Enter”键。

    【讨论】:

      【解决方案3】:

      您将获得作为第二个字符输入的隐式换行符,即 st[1] 正在获得值 '\n'。解决此问题的一种简单方法是在预期的格式字符串中包含换行符:scanf("%c\n", &st[0]);

      【讨论】:

        【解决方案4】:

        在第二个scanf(); 之前使用fflush(stdin); 函数。它将刷新在第一次 scanf(); 之后生成的 ENTER 键。 实际上,您的第二个 scanf() 将 ENTER 作为其输入,并且由于 scanf 在收到 ENTER 后终止,因此它不会在您身边采取任何其他措施。

        【讨论】:

          【解决方案5】:

          改变

          scanf("%c", &st[0]);
          

          到这里

          scanf(" %c", &st[0]);
          

          这是一个简单的答案(没有错误检查或其他任何东西),但它又快又容易。

          【讨论】:

            猜你喜欢
            • 2012-12-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-07
            • 1970-01-01
            • 2018-09-26
            相关资源
            最近更新 更多