[英]fscanf is returning segmentation fault while my file pointer is not null
我被困在這里一個小時。 當文件指針不為空時,不知道為什么我會出現分段錯誤。 任何人都幫助我。
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
),或者在堆棧char 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];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.