Я создал следующую программу, которая позволяет пользователю угадать слово 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;
}
Ответ 1 · рейтинг 4 · Mysticial
У вас есть лишний 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.
Ответ 2 · рейтинг 1 · Peter G.
Внутри цикла напишите
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, чтобы избежать этого.