Поле Структуры необъявленное в основном - PullRequest
0 голосов
/ 01 марта 2011

Привет всем, я пишу программу на C и хочу иметь массив структур malloc'd и заполненный данными из файла. Вот мой typedef для структуры:

typedef struct {
   char name[5];
   int age;
} person;

И затем в своей основной функции я делаю это:

  person *A ;
  int  i ;
  FILE * fin;

  fin = fopen( "people", "r" );

  A = ( person * ) malloc( sizeof(person) * 10 );
  if ( A == NULL ) { printf( "Error mallocing \n" ) ; return -1 ; }

  for( i = 0; i < 10; i++ ) {

    fscanf( fin, "%s %d", name->A[i], age->A[i] );

  }

Теперь, к сожалению, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке, что имя и возраст не объявлены в main. Я никогда раньше не пытался использовать fscanf для создания структур, но я немного растерялся. Заранее спасибо всем, кто что-нибудь знает!

1 Ответ

5 голосов
/ 01 марта 2011

Вы просто случайно получили свой синтаксис в обратном направлении (тот факт, что индексирование указателя возвращает фактическую структуру, а не указатель на нее, поэтому указатель на оператор-член -> не нужен): A[i].name и &(A[i].age),Также неплохо было бы проверить возвращаемое значение из fopen.

...