2011-11-16 47 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

相关问题