程序在 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);
当我 运行 我的程序应该读取一个简单的文件时,它只是在 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);