函数错误'char之前的预期表达式'?

时间:2011-11-16 10:49:54

标签: c function compiler-errors

我创建了以下程序,允许用户在结束程序之前猜测一个单词3次。我正在使用一个函数来读取用户输入。当我编译程序时,我得到错误'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;
}

2 个答案:

答案 0 :(得分:4)

这里有一个额外的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数组的风险。

答案 1 :(得分: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的指针。另一个问题是char *guess[10]表示一个包含10个指向char的指针的数组。

PS:除错误信息外,还有助于发布有问题的行号。

PPS:如果使用输入长答案,则会出现缓冲区溢出内存错误。您可以使用fgets来避免这种情况。