大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
1 函数介绍
1) 函数原型
int getchar(void);
2) 函数功能
从stdin中读取一个字符。
3) 返回值
返回读取字符的ASCII值或者EOF字符或者出错值。
4) 头文件
#include
2 函数使用
2.1 getchar函数的特点
Linux下编写的一个例子:
#include
int main(void)
{
char ch;
int num;
num = 0;
printf(“input your strings:\n”);
while( (ch = getchar()) != ‘\n’){
printf(“%c “, ch);
num++;
}
printf(“\nThe string length is %d\n”, num);
return 0;
}
编译程序:gcc –Wall getchar.c –o getchar
运行程序:./getchar [回车]
//提示:当程序运行到while循环中的getchar时,界面等待用户输入字符,直到回车出现
input your strings:
输入字符串:hello getchar
在输入这段字符串的过程中getchar函数没有发生从stdin读取字符的操作(因为没有任何的字符输出),当在输入字符串后按下回车后界面输出情况如下:
input your strings:
hello getchar
h e l l o g e t c h a r
The string length is 13
misskissc@monday:~$
由程序执行过程及结果可推理getchar在等待用户输入时有两个特征:
1) getchar没有立即读从键盘敲进来的字符,而是等用户按下回车之后再开始读字符。
2) getchar每次只读取一个字符,如果程序中不采用循环而只设置一个getchar()语句,则getchar只读取输入字符串的首个字符,其余字符依然留在缓存区中(若将程序的while循环去掉只输出第一个字符)。
2.2 getchar读取回车字符么?
现将以上程序的while( (ch = getchar()) != ‘\n’)改为while( (ch = getchar()) != ‘n’)其余部分保持不变。重新编译并运行程序,输入字符串:hello[回车]
得第一次运行结果
当程序首次执行到while中的getchar时,getchar函数等待用户的输入,getchar函数一直等待用户输入,当用户按下回车表示用户输入完毕,getchar开始逐个读取输入的字符串,将用户输入的所有字符读取完毕后(因为while的条件为真),再次等待用户的输入:
此次输入字符’n’,注意输入字符’n’时的位置,为什么不是在o后面呢,而是换了一行而且相隔了一个空格呢?其实是因为上一次getchar读了一个回车,并被输出到了界面之上使字符界面得以换了行。输入字符’n’没有按回车之前getchar函数是不会发生读操作的,当在输入字符’n’后按下回车后程序就会结束(或者在输入字符’n’后再输入其它的字符后再按下会车,程序依然将会结束,只是字符’n’后面的字符不会被getchar函数读取,因为while循环的条件已经为假)并得到以下输出界面
String输入字符串的长度为6在一次表明getchar读取了用户输入的回车。字符’n’虽然被读取,但是不会被计数,因为此时while的条件为假了呗。
3 额外总结
函数本身的特性与语句条件限制两者各自带来的作用需要分清楚。
Note Over。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180589.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...