无法读取c程序中的字符
cannot read character in c program
我正在尝试制作一个计算器,它首先从用户那里获取两个数字,然后要求完成操作,然后进行处理并产生所需的输出
为什么这个程序跳过第 11 个块 scanf("%c" , &condition);我正在使用 GCC 编译器。
#include<stdio.h>
void main()
{
char condition;
double number_1 , number_2 , result;
printf("please enter first number : \n");
scanf("%lf" , &number_1);
printf("\n please enter secound number : \n");
scanf("%lf" , &number_2);
printf("\n please enter + , - , * , / \n ");
scanf("%c" , &condition);
switch (condition)
{
case '+':
result = number_2 + number_1;
break;
case '-':
result = number_1 - number_2;
break;
case '*':
result = number_1 * number_2;
break;
case '/':
result = number_1 / number_2;
break;
default:
break;
}
printf(" \nyour result is %.1lf \n" , result);}
Space、制表符、换行符(换行符)、回车符return、换页符和垂直制表符称为“白-space字符”。所有 scanf()
输入格式说明符忽略白色-space 字符,除了这些:"%c"
、"%n"
、"%[]"
.
由于您正在使用 %c
格式说明符,scanf()
将额外的 \n
读入字符变量 c
.
解决方案:使用前导space。 scanf(" %c" , &condition);
我正在尝试制作一个计算器,它首先从用户那里获取两个数字,然后要求完成操作,然后进行处理并产生所需的输出 为什么这个程序跳过第 11 个块 scanf("%c" , &condition);我正在使用 GCC 编译器。
#include<stdio.h>
void main()
{
char condition;
double number_1 , number_2 , result;
printf("please enter first number : \n");
scanf("%lf" , &number_1);
printf("\n please enter secound number : \n");
scanf("%lf" , &number_2);
printf("\n please enter + , - , * , / \n ");
scanf("%c" , &condition);
switch (condition)
{
case '+':
result = number_2 + number_1;
break;
case '-':
result = number_1 - number_2;
break;
case '*':
result = number_1 * number_2;
break;
case '/':
result = number_1 / number_2;
break;
default:
break;
}
printf(" \nyour result is %.1lf \n" , result);}
Space、制表符、换行符(换行符)、回车符return、换页符和垂直制表符称为“白-space字符”。所有 scanf()
输入格式说明符忽略白色-space 字符,除了这些:"%c"
、"%n"
、"%[]"
.
由于您正在使用 %c
格式说明符,scanf()
将额外的 \n
读入字符变量 c
.
解决方案:使用前导space。 scanf(" %c" , &condition);