с, проблемы с использованием структуры

StackOverflow https://stackoverflow.com/questions/812744

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать программу, которая читает текст из внешнего файла (строковая строка 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.

Это было полезно?

Решение

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

clovek someone;

while (buffer[ i ] ) != ' ') {
    someone.fname[ i ] = buffer[ i ];
/* .. */

Другие советы

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

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

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

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

struct Person clovek;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top