我们首先打开msdn
里面对于getchar的解释
C 库函数 - getchar()
描述
C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数。
声明
下面是 getchar() 函数的声明。
int getchar(void)
参数
- NA
返回值
该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
实例
下面的实例演示了 getchar() 函数的用法。
#include <stdio.h>
int main ()
{
char c;
printf("请输入字符:");
c = getchar();
printf("输入的字符:");
putchar(c);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
请输入字符:a 输入的字符:a
getchar()函数机制
getchar()函数实际上是int getchar(void),所以它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来。在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,那么将会读取上一次被读取字符的下一个字符),如果缓存区没有用户键入的字符,那么编译器会等待用户键入并回车后再执行下一步 (注意键入后的回车键也算一个字符,输出时直接换行)。
int main()
{
char ch;
printf("请输入字符:"); //1 2 回车
scanf("%c", &ch); // 读取 1
printf("%c", getchar()); //输出 2
}
第一个字符1被char ch读取,所以getchar()依次读取下一个未读取字符2
再看看这几个代码:
//代码什么意思
//代码1
#include<stdio.h>
int main()
{
int ch=0;
while((ch=getchar()!=EOF)
putchar(ch);
return 0;
}
这里代码适当的修改是可以用来清理缓冲区