Что я делаю не так в этом коде? - PullRequest
1 голос
/ 10 января 2012
#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? Что я делаю не так?

Ответы [ 2 ]

5 голосов
/ 10 января 2012

Чтобы исправить синтаксическую ошибку, удалите ключевое слово 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);
2 голосов
/ 10 января 2012

person - это тип, а не объект. Вы не можете "scanf() в тип: person".

Я бы просто удалил typedef и просто оставил определение структуры вне тела main; и создать объект внутри

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

int main(void) {
    struct person person[5];
    /* ... */
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...