【发布时间】:2021-10-15 13:06:03
【问题描述】:
当我运行我的程序时,它应该读取一个简单的文件,它只是在 fgets() 函数处崩溃。我的 IDE 或 gcc 没有错误。我知道有类似的帖子,但我无法弄清楚它们的问题。这是我的代码,感谢您的帮助!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[64];
int main() {
FILE* fp;
fopen("Memory.mem", "r");
fgets(a, 64, (FILE*)fp);
printf("%s\n", a);
// the getchar is just that the Program doesn't close it self imeadiatly
getchar();
return 0;
}
//In the Memory.mem file is just "abcdefg"
【问题讨论】:
-
您没有将返回值从
fopen分配给fp,因此它未初始化。当您修复该问题时,请务必在使用之前添加代码以检查它是否不是NULL。你不需要在fgets中使用fp的演员表,当你完成它时你应该fclose文件。 -
你应该得到一些关于在没有事先初始化的情况下使用
fp的编译器警告。如果没有,请打开编译器警告。对于 GCC,您可以通过-Wall -Wextra执行此操作