使用typedef结构并使用

时间:2015-04-26 19:22:59

标签: c struct

我在我的程序周围遇到了一个我不知道如何解决的问题。几乎在我使用结构中声明的变量的地方弹出的错误消息如下(示例):  在函数'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技能,并且这个人结构应该是主角。

1 个答案:

答案 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');