1.getchar()作用相当于scanf;putchar作用相当于printf
2.如下代码为源代码
#include<stdio.h>
int main()
{
int ret;
char password[20]={0};
printf("请输入密码:>");
scanf("%s",password);
printf("请确认(Y/N)");
ret=getchar();//Y/N
if(ret=='Y')
{
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}
3.若输入123+回车
代码运行失误
如图
4.原因:由于scanf和getchar()在读取的过程中会将所读内容放入缓冲区,此时输入的“123+回车”相当于“123+\n”,“123”被放入了scanf,而“\n”被放入了ret=getchar()
故跳出了if直接到了else的地方,输出“放弃确认”
4.解决办法
为90清空缓冲区的内容首先可以在scanf和ret=getchar()的中间多加一串代码,如直接添加getchar():
getchar();
如图:
5注:getchar()每次只能接受一串字符 遇到“回车、空格、tab”会终止前面的内容