如何在c中阅读.exe

时间:2014-02-13 22:04:45

标签: c file compression

我正在制作一个小型压缩程序的小项目。为此,我想读取一个文件,比如一个.exe,然后用char解析它char并使用一些简单的字典算法来加密它。

为了阅读文件我只是使用我发现的简单代码:

 char *readFile(char *fileName)
{
    FILE *file;
    char *code = malloc(10000* sizeof(char));
    file = fopen(fileName, "rb");
    do
    {
      *code++ = (char)fgetc(file);

    } while(*code != EOF);

    return code;

}

我的问题是,读取.exe或任何文件似乎是不可能的。制作“代码”的printf()时,没有任何内容被写入。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

@BLUEPIXY很好地识别了代码错误。见下文。你也返回字符串的结尾,可能想要返回开头。

do {
  // *code++ = (char)fgetc(file);
  *code = (char)fgetc(file);
// } while(*code != EOF);
} while(*code++ != EOF);

让你开始阅读任何文件的东西。

#include <stdio.h>
#include <ctype.h>

void readFile(const char *fileName) {
  FILE *file;
  file = fopen(fileName, "rb");
  if (file != NULL) {
    int ch;
    while ((ch = fgetc(file)) != EOF) {
      if (isprint(ch)) {
        printf("%c", ch);
      }
      else {
        printf("'%02X'", ch);
        if (ch == '\n') {
          fputs("\n", stdout);
        }
      }
    fclose(file);
  }
}

当读取二进制文件char-by-char时,代码通常会收到0到25​​5和EOF,257个不同的值。