Побитовое чтение текстового файла - C (СИ)
Формулировка задачи:
Здравствуйте, перейдем сразу к делу:
Нужно побитово считать текстовый файл и далее к каждому биту применить (через XOR) число из другого файла.
Помогите реализовать это.
Решение задачи: «Побитовое чтение текстового файла»
textual
Листинг программы
#include <fcntl.h> #include <io.h> #include <errno.h> #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> int chkerr(int res) { if (res == -1) {cputs(strerror(errno)); exit(errno);} return res; }; void main() { int fp[3] = { 0 }; int i,reg = 0; char ch = '\0'; const char* filename[3] = { "input1.bin", "input2.bin", "output.bin" }; const int mode[3] = {O_RDONLY|O_BINARY,O_RDONLY|O_BINARY,O_RDWR|O_CREAT|O_BINARY}; for (i = 0; i < 2; i++) fp[i] = chkerr(_open(filename[i],mode[i])); _read(fp[1],®,sizeof(reg)); while (_read(fp[0], &ch, sizeof(ch)) == sizeof(ch)) {ch = ch ^ reg; _write(fp[2],&ch,sizeof(ch));} for (i = 0; i < 2; i++) _close(fp[i]); _getch(); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
для работы с файловыми дескрипторами; для работы с вводом/выводом; для работы с ошибками; для работы с стандартным вводом/выводом; для работы с клавиатурой и курсором; для работы со строками; для работы с библиотекой стандартных функций.
- Создаем функцию chkerr(int res), которая проверяет результат выполнения операции с файлом. Если результат равен -1, выводится сообщение об ошибке и программа завершается с кодом ошибки.
- Создаем функцию main(), которая является точкой входа в программу.
- Инициализируем массив из 3-х файловых дескрипторов fp[3] = { 0 }.
- В цикле for открываем два файла из массива filename и fp.
- Считываем 4 байта из файла input1.bin в переменную reg.
- В цикле while считываем по одному байту из файла input0.bin и XOR'ем его с текущим значением reg, затем записываем полученный байт в файл output.bin.
- Закрываем оба файла из массива fp.
- Ждем нажатия клавиши с помощью _getch().
- В данном коде предполагается, что файлы input1.bin и input0.bin существуют в той же директории, что и запускаемый файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д