2010-11-22 49 views
0

我怎樣才能建立一個循環,每次循環都可以接受用戶輸入?循環可以每次通過用戶輸入通過

#include <stdio.h> 

#define WORD "jumble" 
#define JUMBLED "mleujb" 

int main() 
{ 
    char string[6]; 
    int i = 0; 
    printf("The jumbled word is "); 
    printf(JUMBLED); 
    printf("\nCan you guess the original: "); 
    while(i == 0) 
    { 
     scanf("%d", string); 
     if (string == "exit") 
     { 
      return; 
     } 
     if(string == WORD) 
     { 
      i++; 
      printf("Kudos! You've guessed the word!"); 
     } 
     else 
     { 
      printf("English please, good sir. Guess again.\n"); 
     } 
    } 
} 

我所希望的是,每次程序經過循環時,它都需要一個帶有scanf函數的新輸入。但是,這顯然不會那樣工作。相反,該程序會獲取第一個scanf的值,並一遍又一遍地使用它。如果它是錯誤的詞,它將會有一個無限循環。

這個程序有不止一些錯誤:例如,它實際上並沒有將輸入與實際的字進行比較。由於這不涉及這個問題,這不是我的直接關注。

+0

你能解釋一下發生了什麼嗎? – 2010-11-22 06:32:12

+0

您的代碼不能按原樣編譯(缺少分號,無效的語句),也請使用正確的縮進,並且不要將右花括號放在另一個語句的旁邊。讓你的代碼更難閱讀。 :) – birryree 2010-11-22 06:32:33

+0

它需要原始輸入,並在循環中再次使用它,如果它是錯誤的,本質上會造成無限循環 – 2010-11-22 06:33:42

回答

1

準確幫助您的僞代碼不是很好 也可以定義一個更好的問題嗎?你真的不說了什麼錯誤

但這裏是我的猜測

測試是我== 0作爲用戶輸入正確的字你離開你的循環其儘快意味着...

我猜你尋找類似

exit_condition = 0; 

while (exit_condition == 0) 
{ 

    read keyboard entry 

    if(condition to exit loop) 
    { 

     exit_condition = 1; 
     printf("correct") 
    } 
    else 
    { 
     printf("try again") 
    } 

} 

關於我認爲你需要輸入讀了位的測試,以及測試

試試這個

http://www.arachnoid.com/cpptutor/student1.html

+0

來工作,它仍然會一直運行直到它結束。也就是說,即使if的值在if結束之前發生了變化,c仍然會讓程序完成if語句,然後跳回來檢查while語句是否仍然爲真 – 2010-11-22 06:45:27

+0

是的,它會執行到最後,你在這裏遺漏的是在你的代碼中,只要你輸入正確的答案你退出循環。正如我所說你不清楚你想做什麼,我提出了一個答案,但沒有完全理解你的問題。你是否試圖得到一個循環,只要用戶沒有輸入正確的答案,就會一直要求輸入一個數字?你想要用戶輸入一系列的答案... – 2010-11-22 07:02:11

+0

我要去的是,如果用戶輸入錯誤的詞,循環應該重新開始,輸入應該再次採取 – 2010-11-22 07:13:11

2
您使用 scanf()錯誤,而不是 scanf("%d",string)使用 scanf("%s",string)爲%d

用於十進制輸入和%s用於字符串輸入

1
  1. scanf函數不正確,用於獲取輸入字符串。它應該是別人指出的scanf(「%s」,字符串)
  2. 字符串比較不能通過在'C'中使用==來完成。它只會比較將失敗的兩個字符串的地址。改用'strncmp'函數。