我正在制作一个小型压缩程序的小项目。为此,我想读取一个文件,比如一个.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()时,没有任何内容被写入。
我该怎么办?
答案 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到255和EOF,257个不同的值。