C语言中一个关于空格和回车键的处理问题0
自己编写了一个类似计算器的小程序,如下:
#include
char get_choice(void);
float get_num(void);
void get_add(void);
void get_subtract(void);
void get_multiply(void);
void get_divide(void);
int main(void)
{
char choice;
choice=get_choice();
while(choice!='E')
{
switch(choice)
{
case'A':
get_add();
break;
case'B':
get_subtract();
break;
case'C':
get_multiply();
break;
case'D':
get_divide();
}
choice=get_choice();
}
printf("谢谢使用,再见!\n");
return 0;
}
char get_choice(void)
{
char ch;
printf("请选择您要进行的操作:\n"
"A. 加 B. 减\n"
"C. 乘 D. 除\n"
"E. 退出\n");
ch=getchar();
while(getchar()!='\n')
continue;
while(ch'E')
{
if(ch=='\n'||ch==' ')
;
else
printf("请输入: A,B, C, D或E: ");
ch=getchar();
while(getchar()!='\n')
continue;
}
return ch;
}
float get_num(void)
{
float num;
while(scanf("%f",&num)!=1)
{
printf("请输入数字,如: 25, -1.68E8, 3等: ");
while(getchar()!='\n')
continue;
}
while(getchar()!='\n')
continue;
return num;
}
void get_add(void)
{
float first,second,result;
printf("请输入第一个数字: ");
first=get_num();
printf("请输入第二个数字: ");
second=get_num();
result=first+second;
printf("%f + %f = %f\n",first,second,result);
}
void get_subtract(void)
{
float first,second,result;
printf("请输入第一个数字: ");
first=get_num();
printf("请输入第二个数字: ");
second=get_num();
result=first-second;
printf("%f - %f = %f\n",first,second,result);
}
void get_multiply(void)
{
float first,second,result;
printf("请输入第一个数字: ");
first=get_num();
printf("请输入第二个数字: ");
second=get_num();
result=first*second;
printf("%f * %f = %f\n",first,second,result);
}
void get_divide(void)
{
float first,second,result;
printf("请输入第一个数字: ");
first=get_num();
printf("请输入第二个数字: ");
second=get_num();
while(second==0)
{
printf("错误!请输入一个非零数:");
second=get_num();
}
result=first/second;
printf("%f / %f = %f\n",first,second,result);
}
可是在运行时遇到了一个小问题,当让选择A,B,C,D,E的时候,如果先输入一个空格或回车键,再输入选项时,没有反应,只有再一次输入时才能正常运行。可能是get_choice函数出的问题,可是怎样才能使这个函数自动忽略空格或回车键呢?我用了if...else对其进行处理也不顶用!
希望高手解释一下原因并做做修改,不胜感激!