Задан файл целых чисел. Переписать компоненты в обратном порядке - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <string.h>
void main() {
FILE *file;
char *fname = "some_file.txt";
int a[20];
file = fopen(fname,"r");
for (i=0;i<20;i++)
{
printf("chisla:%d",a[i]);
}Решение задачи: «Задан файл целых чисел. Переписать компоненты в обратном порядке»
textual
Листинг программы
#include <stdio.h>
void file_reverse(FILE* fp){
int i, n;
if(!feof(fp)){
i = (fscanf(fp, "%d", &n) == 1);
file_reverse(fp);
if(i)
fprintf(fp, "%d ", n);
} else
rewind(fp);
}
int main(void){
//файл должен быть создан для примера, запиши в файл: 1 2 3 4 5 6 7
FILE* fp = fopen("file.txt", "r+");
file_reverse(fp);
fclose(fp);
return 0;
}
Объяснение кода листинга программы
В этом коде используется рекурсивная функция file_reverse, которая переписывает компоненты в обратном порядке из файла, открытого для чтения и записи.
void file_reverse(FILE* fp)- объявление функции, которая будет выполнять перестановку компонентов в обратном порядке.int i, n;- объявление двух переменных, используемых в функции.if(!feof(fp))- проверка, не достиг ли файловый указатель конца файла.i = (fscanf(fp,%d, &n) == 1);- чтение числа из файла в переменнуюnи присвоение значения переменнойiравное 1, если чтение прошло успешно.file_reverse(fp);- рекурсивный вызов функцииfile_reverseдля обработки оставшейся части файла.if(i)- проверка значения переменнойi.fprintf(fp,%d, n);- запись числаnв файл в обратном порядке.rewind(fp);- возврат файлового указателя в начало файла.int main(void)- объявление функции, которая является точкой входа в программу.FILE* fp = fopen(file.txt,r+);- открытие файла с именемfile.txtдля чтения и записи.file_reverse(fp);- вызов функцииfile_reverseдля перестановки компонентов в обратном порядке.fclose(fp);- закрытие файла.return 0;- завершение функцииmain. Для примера, перед запуском программы создается файлfile.txtи записывается последовательность чисел от 1 до 7. После запуска программы числа в файле будут переставлены в обратном порядке.