Чтение из файла пяти последних строк - C (СИ)
Формулировка задачи:
Добрый вечер!
Есть один модуль , который отвечает за ввод последних 5 результатов программы.
(печатает , последние 5 строчек файла)
Помогите разобраться.
язык Си
//Запись последних результатов в в базу(файл)
void set_last_res(float val)
{
FILE *fin = fopen("base", "a+");
fprintf(fin, "%g\n", val);
fclose(fin);
}
//Вывод последних результатов на экран
void show_last_res(void)
{
FILE* fout = fopen("base", "a+");
int i = 0;
//а именно непонятно ниже.
char base[50][20];
while(!feof(fout))
{
if(!feof(fout))
fscanf(fout, "%s", base[i++]);
}
i = i - 2;
if(i >= 5)
{
for(int j = 4; j >= 0; --j)
printf("%s\n", base[i--]);
}
else
{
while(i >= 0)
printf("%s\n", base[i--]);
}
fclose(fout);
}Решение задачи: «Чтение из файла пяти последних строк»
textual
Листинг программы
if(i >= 5)
{
for(int j = 4; j >= 0; --j)
printf("%s\n", base[i--]);
}
else
{
while(i >= 0)
printf("%s\n", base[i--]);
}
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Проверяется условие
i >= 5. - Если условие истинно, то выполняется цикл
forс переменнойjот 4 до 0. В каждой итерации цикла выводится значение переменнойbase[i--]с помощью функцииprintf, и уменьшается значениеiна 1. - Если условие
i >= 5ложно, то выполняется циклwhileс переменнойiот 0 до 0. В каждой итерации цикла выводится значение переменнойbase[i--]с помощью функцииprintf, и уменьшается значениеiна 1. Список действий: - Проверка условия
i >= 5- 1 - Если условие истинно, то:
- Цикл
forс переменнойjот 4 до 0 - Вывод значения переменной
base[i--]с помощью функцииprintf - Уменьшение значения
iна 1 - Если условие
i >= 5ложно, то: - Цикл
whileс переменнойiот 0 до 0- Вывод значения переменной
base[i--]с помощью функцииprintf - Уменьшение значения
iна 1 Вывод:
- Вывод значения переменной
- Цикл
- Значение переменной
base[4]выводится на экран. - Значение переменной
base[3]выводится на экран. - Значение переменной
base[2]выводится на экран. - Значение переменной
base[1]выводится на экран. - Значение переменной
base[0]выводится на экран.