2013-03-23 87 views
0

我是一個初學者,幾個小時的expirience,我試圖做一個非常簡單的程序來熟悉IF命令。我想出了這個代碼:代碼「應該」工作,但程序停止工作

#include<stdio.h> 

int main() 
{ 
    char ans; 
    char n; 
    char y; 
    printf("Do you want to exit?\n"); 
    scanf("%c\n",ans); 
    if (ans == y) 
    { 
     printf("As you wish!\n"); 
     return 0; 
    } 
    else (ans == n); 
    { 
     printf("You'll exit anyways!\n"); 
     return 0; 
    } 
} 

,我認爲它應該工作,但在我鍵入一些程序停止workig!提前致謝!

+0

'n'和'y'永遠不會設置爲實際值 - 如果您想將它們與'ans'進行比較,您會需要做一些像'char n ='n';' – Hannele 2013-03-23 13:56:15

+0

'如果'不是一個命令,這是一個聲明。 C沒有「命令」。 – 2013-03-23 13:56:33

+0

'scanf(「%c \ n」,&ans);' – wildplasser 2013-03-23 13:56:58

回答

3
else (ans == n); 

這不會給預期的結果。刪除;和條件。 else可能只需要一段代碼。它不處理條件。 如果你想的條件下,使用else if

else if (ans == 'n') 

多個錯誤:

if (ans == y) 

的Y這裏指的是變量,該變量聲明,但沒有價值。當然,你需要參考字符'y'

if (ans == 'y') 

此外,scanf預期的指針,所以不是ans,使用&ans。 它需要寫入該值的內存地址。它並不關心價值。 您將最終了解指針。 (假設你在幾個小時的經驗中沒有超過他們)

+0

「This does not compile。」 - >爲什麼 – md5 2013-03-23 13:58:04

+0

else期望body:v – 2013-03-23 13:58:56

+0

@ Magtheridon96: ;'是一個有效的陳述,這不是OP要寫的東西,但它是*正確的C *。 – md5 2013-03-23 13:59:53

9

if (ans == y) 

應該讀

if (ans == 'y') 

前者比較ans到未初始化的變量y的值,而後者則檢查是否ans包含字符'y'

'n'也是如此。

yn變量是不必要的,可以刪除。

此外,下面的行不正確:

else (ans == n); 

它應該閱讀

else if (ans == 'n') 

最後,(我已經添加了if和已刪除了分號。) scanf()應改爲:

scanf("%c",&ans); 
+0

'else(ans =='n ');'在語法上是有效的;它只是解析不同於OP想要的結果 – 2013-03-23 14:08:57

+0

@R ..需要採取的點 – NPE 2013-03-23 14:10:18

2

有三個主要錯誤。

  • 你應該通過指針scanf功能,讓你擁有前ans&ans)添加一個符號。

  • else聲明末尾有一個尾隨;

  • y指變量(不存在),而要比較ans字符'y'