我在我的程序周围遇到了一个我不知道如何解决的问题。几乎在我使用结构中声明的变量的地方弹出的错误消息如下(示例): 在函数'nameGuy'中: prog.c:42:14:错误:'GUY'之前的预期表达式 的scanf( “%S”,GUY.name);
以下是涉及该计划的这一部分的代码:
typedef struct
{
char *name[7]; //guy name
int level; //guy level
int armor, weapon; //guy equipment
int STR, MAG, HP, SPD; //guy stats
}GUY;
void nameGuy()
{
char aux='N';
do{
printf("\nWrite the name of your guy: »");
scanf("%s",GUY.name);
printf(" Is that so? (Y/N)");
scanf("%c",&aux);
}while(aux!='Y');
}
我做错了什么? 对于进一步的上下文,我试图开发一个基本的文本RPG来尝试和提高我的c技能,并且这个人结构应该是主角。
答案 0 :(得分:1)
您正在使用已定义的类型名称,作为结构的实例,当然无效。
也许你看到了这个
struct
{
char *name[7]; //guy name
int level; //guy level
int armor, weapon; //guy equipment
int STR, MAG, HP, SPD; //guy stats
} GUY;
其中,我不推荐,因为您将GUY
声明为匿名结构和全局变量。这可以解决您的问题:
typedef struct
{
char name[32]; /* guy name: don't make it so small */
/* ^ this should be an array of char, not of pointers */
int level; //guy level
int armor, weapon; //guy equipment
int STR, MAG, HP, SPD; //guy stats
} GUY;
do {
GUY guy;
printf("\nWrite the name of your guy: »");
scanf("%31s", guy.name);
printf(" Is that so? (Y/N)");
scanf(" %c", &aux);
} while(aux!='Y');