с, проблемы с использованием структуры - PullRequest
2 голосов
/ 01 мая 2009

Я пытаюсь написать программу, которая читает текст из внешнего файла (строковая строка int, на строку). Структура определяется вне основной функции:

typedef struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
} clovek;

Мне не нужно, чтобы "clovek" был массивом, так как с каждой строкой данные могут быть перезаписаны. Строка красного цвета для буфера:

fgets(buffer, 50, datafile);

Затем я хочу разобрать его в структуре, но здесь возникает моя проблема:

int i = 0;
while (buffer[i] != ' ') {
  clovek.fname[i] = buffer[i];
  i++;
}

И это выдает мне ошибку: ожидаемый идентификатор или маркер '(' before '.' '

Я также хотел использовать этот код для отладки, но он также выдает еще одну ошибку:

printf("fname, %s\n", clovek.fname);

ошибка: ожидаемое выражение перед 'clovek'

Полагаю, я неправильно понял использование struct.

Ответы [ 2 ]

10 голосов
/ 01 мая 2009

clovek - псевдоним для struct Person. Либо удалите ключевое слово typedef, либо создайте объект типа struct Person где-нибудь в своем коде. С настоящим кодом вы можете сделать:

clovek someone;

while (buffer[ i ] ) != ' ') {
    someone.fname[ i ] = buffer[ i ];
/* .. */
5 голосов
/ 01 мая 2009

Ваше утверждение определяет кловек как псевдоним структуры Person.

Удалите "typedef" из объявления. Таким образом, clovek становится переменной типа Person:

Или, что еще лучше, отделить объявление структуры от объявления переменной:

struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
};

struct Person clovek;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...