getchar()函数和putchar()函数的深度学习


一、getchar()函数

1.getchar()叫做字符输入函数,他的作用是可以输入一个字符,(注意,只能输入一个"字符"),不能输入除了字符以外的其他东西。

2.getchar()是一个不接受参数的函数,因此括号内什么也不加。

3.getchar()函数通过读取输入缓存流中的字符,(一次只能读取一个),来返回值,这个值会储存在getchar()中。

getchar()的返回值是整数类型,读取到的字符会按照ASCII码进行转换成整数,来储存在getchar()中。

例如:

//对getchar()函数返回值的理解和实验
#include <stdio.h>

int main(void)
{
char c=getchar();//键入6 由于现在输入缓存流中没有文本,所以getchar()函数会打开输入缓存流,我就可以输入文本了,getchar()只能
//读取字符文本,输入6,getchar当成数字字符6来读取,6的ASCII码是57,因此getchar()的返回值是57,getchar()中储存的值是57,
//所以char类型(微整数类型)变量c被赋值为57
getchar();//这个getchar()用来清除输入缓存流中的换行符\n,所以这个getchar()将\n储存 ,由于\n对应的ASCII码是10,因此这个getchar
//的返回值是10,即储存的是10

printf("%d\n",c);//以整数形式打印变量c,所以直打印57
printf("%c\n",c);//以字符型时打印变量c,整数57在ASCII对应的是数字字符6,因此打印数字字符6

int d=getchar();//键入A 由于现在的输入缓存流空,所以getchar()会打开输入缓存流,输入文本,getchar()函数读取A这个字符,返回值是
//ASCII码65,因此getchar()储存的值是65,所以整型变量d被赋值为65
getchar();//这个getchar用于清楚输入缓存流中的换行符


printf("%d\n",d);//以整数形式打印变量d,因此直接打印65
printf("%c\n",d);//以字符形式打印变量d,因此打印对应的ASCII码中的A

return 0;
}

二、简要补充sacnf()函数

scanf()函数同样会打开输入缓存流,每次按下回车,输入缓存流中都会存入换行符,因此也需要对这个换行符及时清理。

注意:为了安全起见,不论是对scanf()函数键入整数,还是对scanf()函数键入字符,都要在每次键入后及时清除输入缓存流。

例如:

//使用scanf()函数也是通过输入缓存流来读取
#include <stdio.h>

int main(void)
{
int x;
int y;
scanf("%d",&x);


scanf("%d",&y);//其实 由于键入的是整型,因此scanf()函数会自动跳过非数字,直到遇到数字为止,跳过的非数字就会在输入流缓冲区中清除。
fflush(stdin);//fflush()函数能够一次性的清除输入缓存流

int z;
int g;
scanf("%c",&z);
getchar();
scanf("%c",&g);//键入两个字符型,因此需要清除输入缓存流中的换行符
getchar();

printf("输出两个整型:%d %d\n输出两个字符型:%c %c\n",x,y,z,g);

return 0;
}

 

三、putchar()函数

putchar()函数的参数是char类型(微整数类型)并且参数位置可以是char类型之间的运算,对于字符要加单引号' ',putchar输出的是char类型的字符,对于char类型的整数,也会转换成字符输出。例如:

//putchar()函数的使用
#include <stdio.h>

int main(void)
{
char ch=1;
char gh='A';

putchar(ch+gh);//char类型之间的表达式
puts("\n");//putchar()函数不支持换行,因此在这加了一个换行符

putchar(90);//在char范围之内的整型依旧可以
return 0;
}

 

四、getchar()函数最主要的作用(以及输入型函数支持中文读取)

getchar()函数最主要的作用就是能够使使用者连续输入文本,这些文本,这些文本是ASCII码中的字符,使用方法:

(其实中文也是char类型的,这是后期添加的,所以一个中文对应着一个国标码,getchar()能读取中文并将中文转换成国标码(整数),储存为getchar()的值。现在的输入型函数都支持中文读取)

//如何使用getchar()函数进行文本的连续输入
#include <stdio.h>

int main(void)
{
int x;//这里为什么定义为int,如果想要连续输入文本,就必须定义为int,因为我们需要使用stdio.h中的EOF这个常量,这个常量一般是-1
//不在char类型的范围内,所以用int

while ((x=getchar())!=EOF)//EOF是stdio.h中自带的一个常量,当getchar()读取到文本结尾时,会遇到一个标志,这个标志就是EOF的值,
//如果只使用getchar进行一次文本输入,即不使用循环,那么将不会有EOF代表的标志出现,因为不需要文本结束,使用回车后自己就结束了,
//而对于getchar在循环中进行文本输入或者用它读取文件夹中的内容,则需要EOF所代表的标志来结束 ,文件夹中,系统会自动在文件夹
//末尾加上EOF所代表的标志。而文本输入的话对于windows来说需要使用ctrl+z来生成EOF所代表的标志。
{//生成后在按一下回车,getchar将读取EOF这个标志,然后返回值是EOF,这个关系表达式不成立,因此不会在进行循环键入。
putchar(x); //虽然上面按了回车,但这个换行符不会对下面程序产生影响,这是特例,要记住。
}
getchar();
return 0;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM