[英]What is wrong with this C code for a simple calculator program?
這是我用 C 編寫的一個簡單計算器的代碼。
它編譯並運行但不接受字符並僅執行默認語句。
#include <stdio.h>
int main() {
float num1,num2;
char myOperator;
printf("Enter two numbers and an operator (a,b,c,d for addition, subtraction, multiplication and division respectively) \n");
scanf("%f%f%c", &num1, &num2, &myOperator);
switch(myOperator) {
case 'a': printf("%f", num1+num2);
break;
case 'b': printf("%f", num1-num2);
break;
case 'c': printf("%f", num1*num2);
break;
case 'd': printf("%f", num1/num2);
break;
default: printf("You did not follow the instructions");
break;
}
}
它確實接受char
,只是它會在您的第二個float
之后將空格作為char
。 如果您嘗試在第二個float
之后輸入沒有任何空格的輸出,例如2 3c
,這一點就會變得很明顯。
您可以通過在格式字符串中放置空格來跳過第二個浮點之后的所有空格,如下所示:
scanf("%f%f %c", &num1, &num2, &myOperator); // note the space before the "%c"
這樣你就可以像2 3 c
一樣輸入你的輸入,它會將'c'
作為字符,而不是'3'
和'c'
之間的空格。
空白字符:格式字符串中的任何單個空白字符都會消耗輸入中所有可用的連續空白字符(就像通過在循環中調用
isspace
來確定的那樣)。 請注意,格式字符串中的"\\n"
、" "
、"\\t\\t"
或其他空格之間沒有區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.