powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / С, Считывание структуры из файла.
3 сообщений из 3, страница 1 из 1
С, Считывание структуры из файла.
    #38253295
Фотография Garance
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. В процессе изучения С возник такой вопрос: как считать структуру из файла? Возьмем такой пример:
Есть файл в котором записана информация о людях в таком виде:
Фамилия_Пациента Дата_посещения Диагноз Врач
У нас есть структура:
Код: plaintext
1.
2.
3.
4.
5.
6.
struct reg {
char name [30];
char date [11];
char diag [30];
char doc [30];      
};


Нужно считать строку в файле, каждое слово в строке записать в соответствующий ел. структуры. Перепробовал разные способы, но в результате либо программа зацикливалась, либо не выполняла, то чего от нее требуется.
Вот пример того что пробовал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
void searchp()
{
reg p;
char f[30];
char o[30];
fp=fopen("db.dat", "rb");
printf("Введите фамилию пациента: ");
scanf("%s", &o);
while ( NULL != fgets ( f, 255, fp ) ){
fgets(p.name, 30, fp);
fgets(p.date, 12, fp);
fgets(p.diag, 30, fp);
fgets(p.doc, 30, fp);
printf("%s %s %s ", p.name, p.doc, p.date);
}
fclose(fp);
work();
}


В таком случае программа выводит на экран всю строку, а не только нужные слова. Думаю, нужно поменять fgets на что то другое...
...
Рейтинг: 0 / 0
С, Считывание структуры из файла.
    #38253301
Фотография Garance
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удивительно, думаю на вопросом долгое время - не могу найти ответ. Стоит написать на форуме и решение сразу приходит в голову.
В цикле написал
Код: plaintext
1.
fscanf(fp,"%s %s %s %s", p.name, p.date, p.diag, p.doc);


вместо
Код: plaintext
1.
2.
3.
4.
fgets(p.name, 30, fp);
fgets(p.date, 12, fp);
fgets(p.diag, 30, fp);
fgets(p.doc, 30, fp);



все заработало. Надеюсь это решение кому то пригодится, т.к. по Интернету в поисках решений находил множество таких вопросов, а ответы были не всегда.
...
Рейтинг: 0 / 0
С, Считывание структуры из файла.
    #38253488
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garance,

Как бы fgets читает строку до перевода строки, а , fscanf одно поле - до пробела.
Что тебе было нужно — не понятно.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / С, Считывание структуры из файла.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]