了解getchar
getchar:获取字符;getchar虽然获取的是一个字符,但它返回的是int类型,即读取相应字符对应的ASCII码值。
getchar在读取过程中,文件结束或者错误的时候,会返回EOF(EOF:End Of File),即-1。
getchar的使用
int main()
{
int ch = getchar();
printf("%c\n", ch);
return 0;
}
getchar读取字符所存储形式ASCII码值之后,将数值赋值给int ch,打印char ch。
此时编译运行代码之后,光标闪烁,当我们输入一个字符时,输出的是对应字符(getchar获取了对应字符的ASCII码值,但是输出是%c,字符形式,所以又返回字符)
putchar
int main()
{
int ch = getchar();
putchar(ch);
return 0;
}
putchar:输出一个字符;putchar的作用与上一个代码中printf的作用相同。
getchar与while结合运用
//int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
putchar(ch);
return 0;
}
解读代码:while循环,当getchar获取的数值不等于EOF时循环。
以上代码编译运行之后将会循环(即光标闪烁-输入数值-回车-返回数值-光标闪烁),当想结束代码时,ctrl+Z即可。
练习:尝试理解以下代码
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s",password);//输入密码123456后,我们会回车一下,以便scanf读取输入数值;
//屏幕显示的密码被scanf读取,但回车,即'\n'会被getchar读取,所以在int ch=getchar执行之前,
//我们要清空缓存区。
printf("请确认密码(Y/N):>");
//getchar();//1.这一行代码是为了清空缓存区中的\n,但是这种做法只能清除单个字符
int tmp = 0;
while ((tmp = getchar()) != '\n')//当getchar获取到的字符不为\n时,循环,直至遇到\n进行下一步
{
;
}//当输入密码12345 678910时,带有空格时,scanf只会读取空格前的字符,
//所以剩下的字符需要被清空,此时引入while循环
int ch = getchar();
if (ch == 'Y')
printf("确认成功");
else
printf("确认失败");
return 0;
}