C语言什么时候应该加getchar()吃掉回车

2024-12-02 09:11:38
推荐回答(3个)
回答1:

getchar()只能接你输入的一个字符,而不是字符串。getchar()也不是乱用的,一般情况就用在输入字符的的情况下。至于你后面说的每当有输入语句时都去加一个getchar()是没有必要的。如果你想用getchar()去接住上次输入的回车符以便给下面的运算带来准确性的话,就是在输入整型或者浮点型之后再加一个getchar(),至于要不要在每一行都加就要看什么情况了。我可以给你举两个个简单的例子#include"stdio.h"main(){char ch1,ch2,ch3;

printf("Enter:");

ch1=getchar();

getchar();

printf("Enter:");

ch2=getchar();

printf("Enter:");

ch3=getchar();

putchar(ch1);

putchar(ch2);

putchar(ch3);

putchar('\n');}可以tc运行下。这个程序就是每句后加了getchar()的,是用来你在运行的时候接住你输入的回车的(因为回车也是字符)。再来看一个例子不是每句都需要getchar()的#include"stdio.h"main(){float x,y,z;

char po;

printf("Enter:'); /*提示用户输入数据*/

scanf("%f,%f",&x,&y);

getchar(); /*接住scanf输入后的回车符*/

printf("选择运算符号+、—、*、/:");

op=getchar(); /*输入运行符的,不是接回车*/

switch(op)

{case '+':z=x+y;break;

case '-':z=x-y;break;

case '*':z=x*y;break;

case '/':z=x/y;break;

default:printf("%c,不是运行符.\n",op);

exti(0);} /*用来退出程序 */ printf(%g%c%g=%g\n\n",x,op,y,z);}这个是计算器的程序,这里只用了一个getchar接回车(就是你所说的吃掉回车)。再来看一个不需要getchar接回车的程序#include"stdio.h"main(){char ch1;

ch1=getchar();

putchar(ch1);}这个程序就是打印出你输入的字符,不需要用getchar来接回车,因为getchar只接一个字符,当你输入一个字母再回车时,getchar只接第一个字母,默认回车符跳出输入界面。以上程序在turboc中运行。希望你能通过三个例子明白什么时候用getchar,什么时候不需要。

回答2:

在需要连续输入的情况下,也就是你刚输入完一个字符串,后面还需要输入另一个,需要加一个getchar(),用它来抵消那个回车键,要不第二个字符串会有问题。

回答3:

  getchar有一个int型的返回值,当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。
  当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。
  如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。
  简单来说:在需要连续输入回车的情况下,刚输入完一个字符串,后面还需要输入另一个,需要加一个getchar(),用它来抵消那回车键,要不第二个字符串会有问题。