程序在 c 中的 fgets() 处崩溃

Programm crashing at fgets() in c

当我 运行 我的程序应该读取一个简单的文件时,它只是在 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 您实际上并没有保存返回的文件指针。 当您调用 fgets 时,fp 未初始化,从而导致未定义的行为。

您可以通过以下方式修复它:

FILE* fp;
fopen("Memory.mem", "r");

这样做:

FILE* fp = fopen("Memory.mem", "r");

另请注意,检查打开文件是否成功是个好习惯。

FILE* fp = fopen("Memory.mem", "r");
if(fp == NULL){
    printf("Couldn't open file!\n");
    return EXIT_FAILURE;
}

并且您应该在使用完文件后将其关闭:

fclose(fp);