2014-03-25 70 views
0

我做了一個switch語句,但是它只適用於已經設置的常量。如果我嘗試將其與用戶輸入一起使用,則只有其中一種情況有效,而其他情況則不會。現在無論我輸入什麼,它總是使用默認情況。我嘗試添加另一個getchar()來清除緩衝區中的\n字符,但這沒有什麼不同。生病後整個switch語句這裏:開關語句不執行的情況(c)

 char option=' '; 
     option=getchar(); 
     switch(option){ 

     //Parallel resistance calculations 
     case 'p': 
      CLEAR 
      //PResistance(); 
      printf("RESISTANCE"); 
      getchar(); 
      break; 

     //Ohm's Law calculations 
     case 'o': 
      CLEAR 
      printf("OHM"); 
      //Ohm(); 
      break; 

     //Exits program 
     case 'q': 
      printf("Good bye! Stay safe in the laboratory! :)\nPress any key to exit"); 
      getchar(); 
      exit(0); 
      break; 

     //Error checking 
     default : 
      printf("Invalid input, Try again"); 
      break; 

    } 


} 
while (option!='q'); 

我註釋掉的功能,所以我可以使用打印語句,如果它的工作進行測試。

+1

只有選項是char變量時,交換機纔會匹配。如果它是int,會有問題。你可以改變選項爲char或者你可以使用'switch(option&0xFF){' –

+0

選項是一個char變量。 – AJPennster

+1

如果'option'是一個'int',它仍然會匹配。 'getchar()'無論如何都返回'int',並且''''''''''''''''''''是int。 –

回答

1

只要您在C中輸入characterstringstdin,請務必確保輸入緩衝區中沒有\n。要做到這一點,總是getchar()integerfloat投入。

就你而言,也許你在輸入character之前已經輸入了integer。因此,請在輸入character之前嘗試編寫getchar()

+0

謝謝。在每個輸入後添加getchar()修復了問題。 – AJPennster