C - FSNF 返回分段错误,而我的文件指针不为空



>我被困在这里一个小时了。不知道为什么当文件指针不为空时出现分段错误。任何人请帮助我。

int load(char* dictionary){
char* word = "";
FILE* fp=fopen(dictionary,"r");
if ( fp!= NULL )
{
    while (fscanf(fp,"%s",word) != EOF) // **getting segmentation fault**
    {
        hash_put(word);
    }
}
else
{
        return false;
}
fclose(fp);
return true;}

你还期待什么?不允许写入字符串文本的只读内存。

您应该分配一些读/写内存...例如malloc(不要忘记在最后free),或者在堆栈字符data[1024];

问题不在于文件指针;问题在于您的word变量。

您已将word设置为指向字符串文本"" ),该字符串只有 0 终止符的空间。 尝试修改字符串文本的内容会调用未定义的行为。 这一点,再加上你将在文字末尾存储内容的事实,这就是你的代码崩溃的原因。

阵列不会增长以容纳其他数据。在尝试读取数据之前,必须分配足够的内存来存储数据。

#define WORD_SIZE ... // large enough to hold the largest word in your file
char word[WORD_SIZE];
...
while ( fgets( word, sizeof word, fp ) )
{
  // do stuff with word
}

为什么不尝试给word一些内存来存储这些数据呢?

即数组 - 尝试

 char data[100];

相关内容

  • 没有找到相关文章

最新更新