Ошибка функции «ожидаемое выражение перед char»?

Я создал следующую программу, которая позволяет пользователю угадать слово 3 раза перед завершением программы. Я использую функцию для чтения ввода пользователей. Когда я компилирую программу, я получаю сообщение об ошибке «ожидаемое выражение перед символом». Некоторые отзывы было бы здорово спасибо!

#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;
}

person adohertyd    schedule 16.11.2011    source источник


Ответы (2)


У вас есть лишний 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.

person Mysticial    schedule 16.11.2011
comment
Я пробовал это ранее и получил следующую ошибку: передача аргумента 1 «получить пользовательский ввод из несовместимого типа указателя». обратите внимание, что ожидается 'char**', но аргумент не имеет типа 'char*' - person adohertyd; 16.11.2011
comment
Спасибо, это было большой помощью! Я тоже понимаю ошибку, так что больше не повторю. Большое спасибо - person adohertyd; 16.11.2011

Внутри цикла напишите

get_user_input(guess);

вместо

get_user_input(char *guess[10]);

.

Кроме того, вы должны удалить бесполезный прототип

void get_user_input(char *guess[10]);

и измените подпись следующей функции на

void get_user_input(char * guess)

разрешить передачу указателя на первый символ массива вместо указателя на указатель на первый символ, который не будет компилироваться. Побочная проблема заключается в том, что char *guess[10] означает массив из 10 указателей на char.

PS: Это помогает опубликовать номер оскорбительной строки в дополнение к сообщению об ошибке.

PPS: У вас ошибка переполнения буфера памяти, если при использовании вводятся длинные ответы. Вы можете использовать fgets, чтобы избежать этого.

person Peter G.    schedule 16.11.2011
comment
То же, что и мой комментарий к мистическому выше, Питер, большое спасибо - person adohertyd; 16.11.2011