我试图从一个文件中读入一串文本,但是每次我尝试时都会得到一个分段错误。这是我在程序中做的唯一一件事,所以我不太确定为什么会发生这种情况。
#include <stdio.h>
int main(){
FILE* file;
char* string;
file = fopen("practice.txt", "r");
fgets(string, 100, file);
printf("%s", string);
return 0;
}发布于 2012-10-03 04:17:07
你还没有为你的字符串分配内存。可以使用malloc为字符串分配内存,也可以使用数组char string[100];
发布于 2012-10-03 04:20:06
确保分配内存来存储您将要读取的内容:
char string[101];发布于 2012-10-03 04:26:42
这是因为string未初始化。string是一个char *,最初将垃圾值作为地址保存,fgets函数取消了对该地址的引用,从而导致未定义的行为。
我也不知道
char string[BUFFER_LEN];并适当地定义BUFFER_LEN
或者做
char *string;
string = malloc (sizeof (char) * buf_siz);其中buf_siz保存缓冲区的长度。当您动态分配字符串时,请记住在使用完使用malloc分配的内存块后使用free (string),这是一种很好的做法,可以防止大型程序中的内存泄漏。
始终通过检查fopen的返回值来检查文件是否打开成功。如果返回NULL,则打开操作失败。否则,它将返回FILE指针。
https://stackoverflow.com/questions/12697594
复制相似问题