C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。
下面是 getchar() 函数的声明:
==int getchar(void)== 参数为空 (NULL) 返回值
该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
下面的实例演示了 getchar() 函数的用法。
#include <stdio.h>
int main () { char c; printf("请输入字符:"); c = getchar(); printf("输入的字符:"); putchar(c ); return(0); }
让我们编译一下程序,便可以得到以下结果: 请输入字符:a 输入的字符:a
scanf() 可输入不包含空格的字符串,不读取回车,空格和回车表示输入完毕。 getchar() 只能读取用户输入缓存区的一个字符,包括回车。
#include <stdio.h> int main(){ char a[100];
printf("请输入: "); scanf("%s",&a); printf("字符的值为:%s\n",a); printf("请输入: "); printf("%c",getchar());//读取scanf的回车 printf("%c",getchar()); printf("%c",getchar()); return 0; }
第一个 getchar() 读取了上次 scanf() 的回车,体现在第二个“请输入”后出现了换行,第二、三个 getchar分别 读取 1 2 ,因此 3 没有读取出来。
要避免这种情况,就要在 getchar 前清空缓存区中的回车,可以用 C 语言的基本语法: ==while(getchar()!=EOF&&getchar()!='\n');== 代码完善为: #include <stdio.h> int main(){ char a[100];
printf("请输入: "); scanf("%s",&a); printf("字符的值为:%s",a); while(getchar()!=EOF&&getchar()!='\n'); printf("请输入: "); printf("%c",getchar()); printf("%c",getchar()); printf("%c",getchar()); return 0; }