我正在研究一個實驗任務,我們需要創建一個字典來保存一些單詞和他們的海盜講話等價物。我能夠讀取文件,將單詞分隔出來,如sscanf函數所示,但是當我使用strcpy將每個單詞存儲在它們各自的陣列中時,出現了分段錯誤:strcpy(&eng[i], englishWord);
Strcpy() - C中的分段錯誤
我不明白如何糾正這個問題。 (很抱歉,如果我的代碼是難看這是在我的C.第一次編程)
void CreateDictionary(char eng[], char pir[]){
char word[40];
FILE* dictionary;
const char *pirateWord;
const char *englishWord;
dictionary = fopen("english-to-pirate.txt", "r");
if (dictionary == NULL){
printf("Unable to open the dictionary file.\n");
}
else{
//Setup dictionary
int i = 0;
while(fgets(word, sizeof word, dictionary) != '\0'){
//Split line using semicolon
sscanf(word,"%[^;];%[^;]", englishWord, pirateWord);
printf("%s : %s",englishWord, pirateWord);
//put term in corresponding array
strcpy(&eng[i], englishWord); //seg fault occuring here
strcpy(&pir[i], pirateWord);
i++;
}
}
fclose(dictionary);
}
這是正在被調用的函數:
int main() {
char inFileName[100];
char outFileName[100];
FILE* inFile;
FILE* outFile;
char english[75] = {[0 ... 74] = '\0'};
char pirate[75] = {[0 ... 74] = '\0'};
CreateDictionary(english, pirate);
return 0;
}
您是否意識到,char char [75]'不是字符串數組?它是一個字符串。所以很奇怪你試圖把字典放入這個字符串中。它看起來像你需要使用字符串數組而不是字符數組。 – Ilya 2014-09-25 03:20:31
我想我沒有......這是有道理的。謝謝你指出。我現在想要弄清楚這個部分! – bullinka 2014-09-25 03:40:08