繁体   English   中英

我在此代码中做错了什么?

[英]What am i doing wrong in this code?

#include <stdio.h>
main()
{
    typedef struct{
        char *name;
        int age;
    }person[5];

    int i;
    for (i=0;i<5;i++){
        printf ("name:");
        scanf("%s",person[i].name);
        printf("\nage:");
        scanf("%d",&person[i].age);}

    for (i=0;i<5;i++){
        printf ("person:%d",i);
        printf ("name:%s",person[i].name);
        printf ("age:%d",person[i].age);
    }
}

这是我的示例程序。 但是,在编译时,我始终收到错误“第10、12、16和17行中的人之前的预期表达式?我在做什么错?

要修复语法错误,请删除typedef关键字(您正在尝试声明变量,而不是类型)。

更好的是,更改为:

typedef struct{
    char *name;
    int age;} Person;

Person person[5];

另外,以下是错误的:

scanf("%s",person[i].name);

您首先需要为person[i].name分配内存(例如,使用malloc() )。

最后,以下行中的%s格式说明符不正确:

printf ("age:%s",person[i].age);

person是一种类型,而不是对象。 您不能将“ scanf()转换为类型: person ”。

我只需删除typedef,然后将struct定义保留在main主体之外即可; 并在其中创建一个对象

struct person { /* ... */ };

int main(void) {
    struct person person[5];
    /* ... */
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM