我有一个问题:
我正在编写一个功能类似于十六进制编辑器的c程序。我想输入一个文件并查看其十六进制值。例如,假设我有一个文本文件“ helloworld.txt”,其中仅带有单词“ Hello World!”。在其中,我想指定程序使用该文件,读取其十六进制值(同样,该文件是简单的.txt文件,而不是二进制文件),并将其存储在数组中以备后用。
这是我到目前为止的内容:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch, file_name[25];
FILE *fp;
printf("Enter the name of file you wish to see\n");
gets(file_name);
fp = fopen(file_name,"rb"); // read binary mode
if( fp == NULL ) //error checking
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
printf("The contents of %s file are :\n", file_name);
while( ( ch = fgetc(fp) ) != EOF )
printf("%c",ch);
fclose(fp);
return 0;
}
如您所见,这实际上只是一个简单的文件,可以读取和打印内容。但是,问题是,即使我处于“读取二进制”模式,它也不会给我文本文件的十六进制值。
如何构造该程序,以便它读取标准文本文件的十六进制值,然后(a)将它们放入数组中(我认为使用for循环应该足够简单)或(b)将它们打印到屏幕?
我尝试谷歌搜索以查看其他人是否正在尝试执行相同的操作,但是人们要么已经在从二进制文件中读取文件,要么已经在文件中具有十六进制值。我在常规.txt文件中有纯文本,但我想在其下面使用十六进制值(换句话说,就是文件的十六进制转储)。我希望我的问题和我想做的事情有意义。如果您有任何疑问,请随时告诉我!预先感谢您的所有帮助!我真的很感激!
最佳答案
不知道我是否正确理解了这个问题,但不是简单地使用(对于选项B)这种情况
printf("0X%02x ", ch);
关于c - 用C编程读取十六进制文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22057846/