为了账号安全,请及时绑定邮箱和手机立即绑定

如下所示,第(11)行的getchar();有什么作用?有谁还能举几个getchar()用法的例子?

如下所示,第(11)行的getchar();有什么作用?有谁还能举几个getchar()用法的例子?

C
慕的地6264312 2022-11-03 09:05:15
有这样一个C程序:(1)#include<stdio.h> /*应用printf函数*/(2)#include<ctype.h> /*应用toupper函数*/(3)void print(){(3) printf("\n\t This ia an example.\n\n\t You are welcome!!\n\n");} /*\n 表示换行;\t 表示移动8个字符位*/(4)main(){(5) int flag=1; /*定义整型变量并赋值*/(6) char ch; /*定义字符变量*/(7) while(flag){(8) printf("\n Input 'F' or 'f' to start the program,\n other to exit:");(9) ch=getchar();(10) ch=toupper(ch); /*得到大写字母*/(11) getchar(); /*去掉回车符*/(12) if(ch=='F')(13) print();(14) else(15) flag=0;}(16) return;/*返回*/}
查看完整描述

4 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

getchar 由宏实现:#define getchar() getc(stdin)。

getchar有一个int型的返回值。当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。

当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符,getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。

如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。

getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar();通常把输入的字符赋予一个字符变量,构成赋值语句,如:

char c;
c=getchar();
#include<stdio.h>
void main()

{
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}

使用getchar函数还应注意几个问题:
getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。
使用本函数前必须包含文件“stdio.h”。
在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入,输入            完毕再返回TC屏幕。


查看完整回答
反对 回复 2022-11-08
?
茅侃侃

TA贡献1842条经验 获得超21个赞

getchar 由宏实现:#define getchar() 。

getchar(stdin)语句功能:getchar有一个int型的返回值,当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。

当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符,getchar函数的返回值是用户输入的第一个字符的ASCII码。

如出错返回-1,且将用户输入的字符回显到屏幕,如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。

也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。

示例:

#include<stdio.h>

void main()

{

char c;//定义一个字符

printf("input a character\n");

c=getchar();  //从键盘获取一个字符

putchar(c);//输出字符

}



查看完整回答
反对 回复 2022-11-08
?
DIEA

TA贡献1820条经验 获得超2个赞

getchar();永远只向缓存中输入一个字符,
在你举的例子中(9)步其实只是向缓存中存入的用户输入的第一个字母,
正常说是f
但在c中回车符也算个字符
如果没有(11)
再第二次循环中 (9)步向缓存中递交的并不是用户输入的字符
而是用户第一次打入的回车符
导致循环停止
getchar();的用法很多;
一种就是你这个程序用到的清空回车符 这种情况一般发生在在循环中涉及到输入的情况
还有一种是某些编译平台(IDE)在运行程序时并没有在程序运行后给人看结果的时间 这时候 在程序最后加上getchar()就能造成程序的暂停 给程序员度结果的机会


查看完整回答
反对 回复 2022-11-08
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

main()
{
int c;
while((c=getchar())!='\n')
printf("%c",c);
}

这段程序的作用是读入一个字符后立即输出, 直到输入一个“换行”为止(从键盘输入一个字符,如果不是换行符就执行printf,在屏幕输出); 同时,注意从终端键盘向计算机输入时,是在按 ENTER 键以后才将一批数据一起送到内存缓冲区中去的。
使用getchar函数还应注意几个问题:
getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只 接收第一个字符。
使用本函数前必须包含文件“stdio.h”。
在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入 完毕再返回TC屏幕。


查看完整回答
反对 回复 2022-11-08
  • 4 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信