当程序调用getchar()时,程序就等着用户按键输入,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)才停止,然后getchar()从缓冲区读走一个个字符,也就是说,后续的getchar()调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。一个简单的代码,供参考验证:
#include <stdio.h>
int main()
{
char input_char;
input_char = getchar();// 如输入:123 回车
putchar(input_char); // 这句输出:1
input_char = getchar();// 这句从缓冲区读取
putchar(input_char); // 这句输出:2
input_char = getchar();// 这句从缓冲区读取
putchar(input_char); // 这句输出:3
// 最终显示效果:123
return 0;
}
语法:int getchar(void); 从标准输入流只读取一个字符(包括空格、回车、tab),读到回车符(‘\n’)时退出。键盘输入的字符都存到缓冲区内, 一旦键入回车, getchar就进入缓冲区读取字符, 一次只返回第一个字符作为getchar函数的值, 如果有循环或足够多的getchar语句, 就会依次读出缓冲区内的所有字符直到’\n’。要理解这一点, 之所以你输入的一系列字符被依次读出来, 是因为循环的作用使得反复利用getchar在缓冲区里读取字符, 而不是getchar可以读取多个字符, 事实上getchar每次只能读取一个字符.
【以下回答由 GPT 生成】
这段代码是用来计算字符串中的英文字母、空格、数字和其他符号个数的。
使用getchar
函数是为了逐个获取输入的字符,可以遍历整个字符串进行判断。
代码的逻辑如下: 1. 声明字符变量c
以存储输入的字符,和整数变量letters
、space
、digits
、others
分别用来计数英文字母、空格、数字和其他字符的个数。 2. 提示用户输入字符串。 3. 进入一个循环,每次循环获取一个字符,直到输入的字符为换行符\n
时循环结束。 4. 在循环内,判断当前字符的类型: - 如果是字母,则letters
计数加一。 - 如果是数字,则digits
计数加一。 - 如果是空格,则space
计数加一。 - 否则,认为是其他字符,others
计数加一。 5. 循环结束后,输出结果,分别为字母个数、数字个数、空格个数和其他字符个数。
该段代码使用getchar
函数逐个获取输入的字符,通过判断字符的ASCII码值来确定其类型。由于输入字符串以换行符\n
结束,所以通过判断输入字符是否为换行符来判断循环是否终止。
这段代码的运行结果取决于用户输入的字符串。输出结果会显示输入字符串中的英文字母、空格、数字和其他字符的个数。如输入字符串为"Hello 123, World!",输出结果为"字母:12,数字:3,空格:3,其他:2"。
【相关推荐】