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