众所周知,C语言是一个强大且面向过程的高级语言,而其面向过程也带来了一定的麻烦,包括程序输入的残留。
在scanf()和putchar()读取用户输入时,不会自动抛弃用户多余的输入项,包括回车'\n',其带来的一大麻烦便是在下一次读取时,由于还有一个回车或其他字符没有被读取,C会将其视为输入并直接读取。
//程序实例1
#include<stdio.h>
int main(){
char ch,ch1;
printf("Enter a char:");
ch=getchar();
printf("Enter a char again:");
ch1=getchar();
printf("The ch=%c and the ch1=%c",ch,ch1);
return 0;
}
程序的运行示例如下:
可见在程序中输入'a'键并回车,两个getchar()分别读取了'a'和不可见的回车字符并赋值给了ch和ch1。
执行scanf()和getchar()时,会先寻找用户输入,如果在当行没有发现任何输入内容,才会询问用户。在程序实例1中我们不仅输入了'a',还输入了回车'\n‘字符,第一个getchar()发现了第一个'a'字符后,第二个getchar()会再次搜寻用户的输入内容,并发现了'\n'