Записать во второй файл только числа, кратные 4 - C (СИ)
Формулировка задачи:
1.
В файле записана последовательность целых чисел. Записать во второй файл только числа, кратные 4.2.
Создать файл с таблицей ASCII кодов строчных букв латинского алфавита.Решение задачи: «Записать во второй файл только числа, кратные 4»
textual
Листинг программы
#include <stdio.h>
#include <assert.h>
int func4(int val) {
return val % 4 == 0;
}
void streamToStream(FILE* from, FILE* to, int (*func)(int)) {
int val;
while (fscanf(from, "%d", &val) == 1) {
if (func(val)) {
fprintf(to, "%d ", val);
}
}
}
int main() {
FILE* from = fopen("from.txt", "r");
FILE* to = fopen("to.txt", "w");
assert(from != NULL);
assert(to != NULL);
streamToStream(from, to, func4);
fclose(to);
fclose(from);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и проверки утверждений.
- Определение функции-фильтра
func4, которая возвращаетtrue, если число кратно 4. - Определение функции
streamToStream, которая считывает числа из одного файла и записывает в другой только числа, которые проходят через функцию-фильр. - В функции
mainоткрываются файлы на чтение и запись. - Выполняется проверка на неравенство
NULL, чтобы исключить возможные ошибки при открытии файлов. - Вызывается функция
streamToStreamдля передачи данных из одного файла в другой с использованием функции-фильраfunc4. - Файл
toзакрывается, чтобы корректно завершить работу с ним. - Файл
fromзакрывается, чтобы корректно завершить работу с ним. - Программа возвращает 0, чтобы корректно завершить работу.