linux c用16进制打印文件内的字符串
时间: 2024-10-09 22:04:52 浏览: 14
在Linux C语言中,如果你想要以16进制的形式打印文件内容内的字符串,可以使用`fread`函数读取文件,并配合`hexdump`或自定义函数转换字符到16进制。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void hexify(char *data, size_t len) {
for (size_t i = 0; i < len; ++i) {
if (data[i] >= ' ' && data[i] <= '~') { // 打印ASCII码在可见范围内的字符
printf("%02X ", data[i]);
} else {
printf(".");
}
}
printf("\n");
}
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
return 1;
}
FILE *file = fopen(argv[1], "rb"); // 以二进制模式打开文件
if (!file) {
perror("Error opening file");
return 1;
}
char buffer[4096]; // 读取缓冲区大小
size_t read_count;
while ((read_count = fread(buffer, 1, sizeof(buffer), file)) > 0) {
hexify(buffer, read_count);
}
fclose(file);
return 0;
}
```
这个程序会读取指定文件的内容,然后对每字节应用`hexify`函数,将其转换为16进制并打印。注意这将只打印出ASCII码在可见字符范围内的部分,对于不可见字符(如控制字符)显示点`.`。