Как используя функции ввода-вывода нижнего уровня, считать структуру из файла? - C (СИ)
Формулировка задачи:
Как используя функции ввода-вывода нижнего уровня, считать структуру из файла?
Структура состоит из 3 полей. Но размер каждого поля не определен.
Считал всю структуру в одну строку, но при попытке ее разбиения на части ничего не происходит.
пример кода
int f,i=0,g=0;
char str[800];
f=open("Q.txt",O_RDWR | O_BINARY);
struct dat
{
char sname[20];
char ch[4];
char nk[4];
char ng[4];
};
read(f,str,800);
printf("\n%s\n",str);
struct dat d[n];
for(i=0;i<24;i++)
{ while(g!=n)
{if(g==0)
{
while(str[i]!='\n')
{
tb[0].ch[i]=str[i];
}
}
while(str[i]!=' ')
{
tb[g].sname[i]=str[i];
printf("\ns=%s\n",tb[g].sname);
}
if(str[i]=='\n')
{
g++;
}
}}
i=1;
while(str[i]!=' ')
{
tb[0].sname[i]=str[i];
printf("\ns=%s\n",tb[g].sname);
i++;
}
close(f);Решение задачи: «Как используя функции ввода-вывода нижнего уровня, считать структуру из файла?»
textual
Листинг программы
fscanf(f,"%s%s%s%s\n",&d[i].sname,&d[i].ch,&d[i].nk,&d[i].ng);
Объяснение кода листинга программы
- В данном коде используется функция
fscanf, которая предназначена для чтения данных из файла. - Формат строки
%s%s%s%s\nуказывает на то, что функцияfscanfдолжна считать четыре строки из файла. - Переменная
d[i]относится к массиву структур, который называетсяd. - Поле
snameструктурыd[i]будет содержать имя, которое было считано из файла. - Поле
chструктурыd[i]будет содержать информацию о числе комнат, которое было считано из файла. - Поле
nkструктурыd[i]будет содержать информацию о количестве кроватей, которое было считано из файла. - Поле
ngструктурыd[i]будет содержать информацию о количестве гостей, которое было считано из файла. - В конце каждой строки в файле присутствует символ новой строки
\n, который помогает функцииfscanfкорректно считывать каждую строку. - Судя по всему, данный код выполняет чтение данных из файла и сохраняет их в массиве структур
d.