【问题标题】:c programming enter character for loopc编程输入字符for循环
【发布时间】:2017-02-19 21:21:49
【问题描述】:

我正在尝试编写一个简单的代码。

我应该使用 getchar 输入 10 个字母,然后打印最小的一个。

例如。 'A' 在 ASCII 中是 65,如果我输入 'A',它应该打印出 'A' 是最小的。

我已经完成了应该输入字母的第一部分,但我的 for 循环中的某些内容正在中断。

这是我的代码:

#include <stdio.h>

int main(void) 
{
    char ch;
    int i;

    for(i=0; i<10; i++) {
        ch = getchar;
        printf("You entered : %c\n", ch);
    }

    return 0;
}

使用该程序我得到了五次:

a
You entered : a
You entered : 

【问题讨论】:

  • 请在问题中包含代码和结果。链接可能会随着时间的推移而失效,并且让它们消失会使问题完全无法阅读。
  • 对不起,我是这个页面的新手。我该怎么做??
  • 如果您编辑答案,您可以插入代码 sn-ps。所有其他格式化工具旁边都有一个选项,您可以在其中选择要格式化为代码的任何文本。只需粘贴图像中的代码并使用格式化程序
  • ch = getchar; => ch = getchar();
  • 启用编译器警告。了解它们的含义并正确修复它们。

标签: c loops for-loop getchar


【解决方案1】:

不清楚你在问什么,我假设你想知道为什么你的程序在看似 5 次迭代后停止,为什么你得到空的额外 You entered:。

这是由于getchar() 的工作方式。当您输入一个字符并按 Enter 键时,您实际上是在输入类似 a\n 的内容。第一次运行getchar 时,它会抓取a,第二次它会抓取n(新行)进行两次迭代。一旦它这样做了,它就会等待你输入更多,因为它已经消耗了它可用的全部输入。

您的问题的一个解决方案是在 ch = getchar() 之后使用额外的 getchar(),您没有分配给任何东西以消耗额外的换行符。

更多关于这方面的讨论可以in this question。

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2021-11-30
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多