2011-11-16 153 views
1

我已經創建了以下程序,允許用戶在結束程序前猜測一個單詞3次。我正在使用函數來讀取用戶輸入。當我編譯程序時,我得到錯誤'char之前的預期表達式'。一些反饋將非常感謝!函數錯誤「char之前的期望表達式」?

#include <stdio.h> 
#include <string.h> 

void get_user_input(char *guess[10]); 

void get_user_input(char *guess[10]) 
{ 
    printf("Please guess the word: \n"); 
    scanf("%s", guess); 
} 

int main(void) 
{ 
    const char secret[10] = "pink"; 
    char guess[10]; 
    int i; 

    for (i=0; i < 3; i++) 
    { 
     get_user_input(char *guess[10]); 

     if (strcmp(secret, guess)==0) 
     { 
      printf("Your guess was correct"); 
      return 0; 
     } 
     else 
     { 
      printf("Your guess was incorrect. Please try again\n"); 
     } 
    } 
    return 0; 
} 

回答

3

你有一個額外char這裏:

for (i=0; i < 3; i++) 
{ 
    get_user_input(char *guess[10]); 

剛剛擺脫它。你只需要通過變量

get_user_input(guess); 

編輯:

另一個問題似乎是這樣的功能:

void get_user_input(char *guess[10]); 

它改成這樣:

void get_user_input(char *guess) 
{ 
printf("Please guess the word: \n"); 
scanf("%s", guess); 
} 

它應該工作。但是,請注意,您冒着超出guess陣列的風險。

+0

我早些時候嘗試過,並得到以下錯誤:傳遞參數1'從不兼容的指針類型獲取用戶輸入。注意預期'char **',但參數不是類型'char *' – adohertyd

+0

我剛編輯我的答案來解決這個問題。 – Mysticial

+0

謝謝,這是一個很大的幫助!我也明白這個錯誤,所以不會再犯這個錯誤。非常感謝 – adohertyd

1

在循環中,寫

get_user_input(guess); 

,而不是

get_user_input(char *guess[10]); 

此外,您應該刪除無用的原型

void get_user_input(char *guess[10]); 

,並更改以下功能的簽名

void get_user_input(char * guess) 

讓一個指向數組的第一個字符來代替傳遞的指向第一個不會編譯的char的指針。一個側面的問題是char *guess[10]意味着10個指向char的指針的數組。

PS:除了出現錯誤信息外,它還可以幫助發佈有問題的行號。

PPS:如果使用輸入較長的答案,則會出現緩衝區溢出內存錯誤。您可以使用fgets來避免這種情況。

+0

和我上面神祕的評論一樣,彼得非常感謝你 – adohertyd

相關問題