c 编程 for 循环输入字符

标签 c loops for-loop getchar

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

我应该使用 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 : 

最佳答案

不太清楚您在问什么,我假设您想知道为什么您的程序在似乎 5 次迭代后停止以及为什么您得到空的额外您输入: .

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

解决您的问题的一个解决方案是在 ch = getchar() 之后使用额外的 getchar() ,您不会将其分配给任何内容以消耗额外的内容换行符。

有关此问题的更多讨论可 in this question .

关于c 编程 for 循环输入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333031/

相关文章:

vba - 循环遍历工作表 2 并将特定值复制到工作表 1 上的指定列

algorithm - 线程构建 block 中嵌套循环的并行化

javascript - 在循环中合并代码的更好方法是什么?

windows - 批处理变量集,但之后立即变为空白

JavaScript:从 PHP 脚本中提取信息

c - [c]中变长数组(VLA)的初始值从哪里来?

c - C中的 float

c - 在保护模式下设置中断 (x86)

c - 将 char *c[] 分配给结构中的双指针

javascript - 2 个数组,不同大小,一旦达到最大索引,在循环内重用一个数组