我有一个问题:

我正在编写一个功能类似于十六进制编辑器的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/

10-08 22:04
查看更多