Я пытаюсь прочитать строку текста из файла (пример ниже).Каждая строка текста имеет: название книги (начинается с заглавной буквы, может состоять из нескольких слов), номер книги, страна происхождения книги (начинается с заглавной буквы) и каталог книги (начинается с заглавной буквы, можетбыть несколькими словами).Каждая строка заканчивается на \ n, и начинается следующая строка.Я хочу прочитать строку и разделить заголовок, номер, страну и название.Как это сделать правильно?
Я пытался читать символ за символом, и когда символ, который я сейчас читаю, является либо цифрой, либо заглавной буквой, а предыдущий символ был "пробелом", флаг должен подниматься, чтобы сигнализироватьЯ должен перейти, например, от заголовка к номеру, от номера к стране и т. Д. Когда я читаю «\ n», все флаги должны идти вниз и процесс должен начинаться заново
void openfile(char* filedestination)
{
FILE *file = fopen(filedestination, "r+");
int help[100];
int c;
int name[100];
char title[50];
int country[50];
int number[6];
int i = 0, flagt = 0 , flagn = 0 , flagc = 0, flagname = 0;
if (file == NULL)
{
printf("Opening error");
exit(-1);
}
while((c = fgetc(file))!=EOF)
{
help[i] = c;
if (flagt == 0) {
for (int j = 0; j < i; j++) {
name[j] = help[j];
if (c > 47 && c < 91 && help[i - 1] == 32) {
flagt = 1;
j = 100;
}
}
}
if (flagc == 0)
{
int j = 0;
while (flagc == 0) {
number[j] = help[i];
if (c > 47 && c < 91 && help[i - 1] == 32) {
flagc = 1;
}
j++;
i++;
}
}
i++;
printf("\n");
for (int j = 0; j < i; j++) {
printf("%c", name[j]);
}
for (int j = 0; j < i; j++) {
printf("%c", country[j]);
}
fclose(file);
}
}
Пример строки:
Горы 10002 Франция Чудеса природы
Фотонные кристаллы 10003 Германия Наука
Итак, я должен получить название = Горы, число = 10002, страна = Франция, название = Чудеса природы.Затем я буду использовать его в другой функции, поэтому я могу перезаписать имя после прочтения его из первой строки, потому что оно мне не понадобится.