Книга: Программирование для Linux. Профессиональный подход
Листинг Б.4. (hexdump.c) Отображение шестнадцатеричного дампа файла
Листинг Б.4. (hexdump.c) Отображение шестнадцатеричного дампа файла
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
unsigned char buffer[16];
size_t offset = 0;
size_t bytes_read;
int i;
/* Открытие файла для чтения. */
int fd = open(argv[1], O_RDONLY);
/* Чтение данных из файла по одному блоку за раз. Чтение
продолжается до тех пор, пока размер очередной порции байтов
не окажется меньше размера буфера. Это свидетельствует
о достижении конца буфера. */
do {
/* чтение следующей строки байтов. */
bytes_read = read(fd, buffer, sizeof(buffer));
/* Отображение смещения, а затем самих байтов. */
printf("0x%06x : ", offset);
for (i = 0; i < bytes_read; ++i)
printf("%02x ", buffer[i]);
printf("n");
/* Вычисление позиции в файле. */
offset += bytes_read;
}
while (bytes_read == sizeof(buffer));
/* Конец работы. */
close(fd);
return 0;
}
Ниже показаны результаты работы программы. Она выводит дамп самой себя.
% ./hexdump hexdump
0x000000 : 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
0x000010 : 02 00 03 00 01 00 00 00 c0 B3 04 0B 34 00 00 00
0x000020 : e8 23 00 00 00 00 00 00 34 00 20 00 06 00 28 00
0x000030 : 1d 00 1a 00 06 00 00 00 34 00 00 00 34 80 04 08
...
Эти результаты могут быть разными в зависимости от того, какой компилятор применялся и какие флаги компиляции были установлены.
- Б.1.4. Чтение данных
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Эффективная работа с временными файлами сортировки
- Единое имя файла параметров InterBase
- Параметры конфигурационного файла InterBase
- 13. Зарабатываем на своих файлах: файлообменники, загружаеми получаем процент за скачивание
- Листинг 15.11. Код для загрузки файла с Web-сервера
- Создание и открытие файла
- Управление файлами занятий
- Как изменить имя файла или папки?
- Как создавать комментарии к файлам?
- Что такое расширение файла? Откуда Windows знает, какой программой открывать файл?