반응형
아래는 C언어로 작성된 프로그램으로, 주어진 텍스트 파일을 열어 파일의 내용을 문자와 16진수(hexdump) 형태로 출력합니다. 이 프로그램은 바이너리 파일도 처리할 수 있습니다.
#include <stdio.h>
#include <stdlib.h>
void print_hex_ascii_line(const unsigned char *data, int length, int offset) {
int i;
// Offset
printf("%08x ", offset);
// Hex part
for (i = 0; i < 16; i++) {
if (i < length)
printf("%02x ", data[i]);
else
printf(" ");
if (i == 7) printf(" ");
}
printf(" ");
// ASCII part
for (i = 0; i < length; i++) {
if (data[i] >= 32 && data[i] <= 126)
printf("%c", data[i]);
else
printf(".");
}
printf("\n");
}
int main(int argc, char *argv[]) {
FILE *file;
unsigned char buffer[16];
size_t bytesRead;
int offset = 0;
if (argc != 2) {
fprintf(stderr, "사용법: %s <파일이름>\n", argv[0]);
return 1;
}
file = fopen(argv[1], "rb");
if (file == NULL) {
perror("파일을 열 수 없습니다");
return 1;
}
while ((bytesRead = fread(buffer, 1, sizeof(buffer), file)) > 0) {
print_hex_ascii_line(buffer, bytesRead, offset);
offset += bytesRead;
}
fclose(file);
return 0;
}
사용 방법:
1. 위 코드를 예를 들어 hexdump.c라는 파일에 저장합니다.
2. 터미널에서 컴파일합니다:
gcc -o hexdump hexdump.c |
3. 프로그램을 실행합니다:
./hexdump example.txt |
출력 예시:
00000000 48 65 6c 6c 6f 2c 20 43 21 0a Hello, C!. |
이 프로그램은 xxd나 hexdump 명령어처럼 간단한 분석용으로 사용할 수 있어요. 필요에 따라 출력 포맷을 조정할 수도 있습니다.
반응형
'C_C++' 카테고리의 다른 글
(C언어) 비트 연산자를 이용한 암호화 복호화 예제 (0) | 2025.03.27 |
---|---|
정수 1을 저장할 때, int 형식이 가장 좋은 이유 (0) | 2025.01.17 |
C언어 특징 Features of C language (0) | 2025.01.15 |
C++ 언어의 역사 History of the C++ Language (0) | 2025.01.09 |
C언어의 역사 History of the C language (0) | 2025.01.08 |