我创建了以下程序,允许用户在结束程序之前猜测一个单词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;
}
答案 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来避免这种情况。