Ошибка функции «ожидаемое выражение перед символом»? - PullRequest
1 голос
/ 16 ноября 2011

Я создал следующую программу, которая позволяет пользователю угадывать слово 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;
}

Ответы [ 2 ]

4 голосов
/ 16 ноября 2011

У вас есть дополнительные 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 голос
/ 16 ноября 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 указателей на символ.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...