C语言中的getchar()
1.getchr功能简单介绍
getchar();获取一个字符,获取成功得到字符,获取失败得到EOF1。
有获取就有输出,putchar() 输出一个字符。
2getchar的返回类型是 i n t \color{red}{int} int.
解释:1.getchar()读取的是字符,而字符本质上是以ASCII码值的形式存在的,而ASCII码值是整形,所以返回类型是 i n t \color{red}{int} int。
2.getchar读取地时候不一定返回的是ASCII码值,有可能返回EOF,而EOF本质上是(-1),(-1)不是ASCII码值,就是一个单纯的整数,所以返回为整形。
3.getchar缓冲区
当我们从scanf输入数据时(数据在这里起名密码),输入完数据按下回车,会在缓冲区打印(\n),使得第一个getchar读取到的是(\n),只有再写一个getchar,才能读到接下来输入地数据。
如若还是不理解,接下来我们用代码讲解一遍
例题:用getchar读取输入的密码,当密码中有空格地时候。输入完密码后(Y/N)来确定密码即可。
代码1
#include<stdio.h>
int main()
{
char password[20]={0}; //创建密码
printf("请输入密码:>");
printf("请确认密码(Y/N)");
int ah=getchar(); //清理缓冲区 第一个getchar清理缓冲区中的\n
int ch=getchar(); //第二个getchar 读取(Y/N)
if(ch=='Y') //简单地选择语句,如若不懂,请观看
//我的选择语句这块的博客
{
printf("确认成功!\n");
}
else if(ch=='N')
{
printf("确认失败\n");
}
else
{
printf("请重新确认!\n");
}
return 0
}
先声明一下,以上代码只适用于密码中没有空格的
仔细研究这块的代码,发现逻辑什么的都没有问题,但是我们
\color{blue}{仔细研究这块的代码,发现逻辑什么的都没有问题,但是我们}
仔细研究这块的代码,发现逻辑什么的都没有问题,但是我们
仔细看题目,密码中是有空格的
\color{red}{仔细看题目,密码中是有空格的}
仔细看题目,密码中是有空格的
而且没有说密码中有多少空格,所以我们换一个思路,改进一下代码
\color{blue}{而且没有说密码中有多少空格,所以我们换一个思路,改进一下代码}
而且没有说密码中有多少空格,所以我们换一个思路,改进一下代码
代码改进版
#include<stdio.h>
int main()
{
char password[20]={0}; //创建密码
printf("请输入密码:>");
printf("请确认密码(Y/N)");
int tmp=0;
while((tmp=getchar()!='\n'))
{
;
}
int ch=getchar(); //第二个getchar 读取(Y/N)
if(ch=='Y') //简单地选择语句,如若不懂,请观看
//我的选择语句这块的博客
{
printf("确认成功!\n");
}
else if(ch=='N')
{
printf("确认失败\n");
}
else
{
printf("请重新确认!\n");
}
return 0
}
改进思路:我们无法得知密码中设置了多少个空格,但我们知道,getchar()最会读到 \n,所以便有了以上的while()循环。
4.最后的小练习,只打印数字字符(先自己想,不会在看代码)
#include<stdio.h>
int main()
{
int ch=0;
while((ch=getchar()!)=EOF)
{
if(ch<'0'||ch>'9')
continue;
putchar(ch);
}
return 0;
}
学的不是技术,更是梦想
EOF本质上是-1,在控制面版按下 ctrl+Z getchar读到EOF! ↩︎