Я создаю текстовый файл в режиме "w" и записываю туда информацию.
Затем считываю её порциями в режиме "r":
считываю первую порцию (30 байт), записываю её в переменную. Перевожу курсор на 30 байт от начала файла, считываю вторую порцию (10 байт) и заношу в переменную, затем так же третью порцию (10 байт). После этого, данная строка символов в файле заканчивается, мне нужно перейти на следующую строку и считать всё точно такими же порциями. Как начать считывать следующую строку?
Вот код программы:
#include <stdio.h>
#include <stdlib.h>
#define N 30
#define R 10
#define K 2
struct STUDENT{
char name[N];
char group[R];
char marks[R];
};
int main()
{
/* Восьмеричный код "Возврат каретки"*/
const char CR= '\015';
/* Восьмеричный код "Перевод строки"*/
const char LF = '\012';
struct STUDENT students;
int i;
FILE *file;
//Запись в файл
file = fopen("structures.txt", "w");
fprintf(file, "Korobkov N.V.");
fseek(file, N, SEEK_SET);
fprintf(file, "IST-151");
fseek(file, N+R, SEEK_SET);
fprintf(file, "5 3 4 5 1");
fclose(file);
//Чтение из файла
file = fopen("structures.txt", "r");
for (i = 0; i < N; i++){
fscanf(file, "%c", &students.name[i]);
}
fseek(file, N, SEEK_SET); //Перевод курсора на 30 байт
for (i = 0; i < R; i++){
fscanf(file, "%c", &students.group[i]);
}
fseek(file, N+R, SEEK_SET); //Перевод курсора на 40 байт
for (i = 0; i < R; i++){
fscanf(file, "%c", &students.marks[i]);
}
fclose(file);
//Вывод полей структуры на экран
printf("%s\n", students.name);
printf("%s\n", students.group);
printf("%s\n", students.marks);
return 0;
}