0
這是代碼片段。字典格式是:{單詞\ n單詞\ n ...}二維char數組動態定位失敗
該程序似乎失敗了第二次它重新分配二維數組royn,我不能圖解它爲什麼。
在聲明中:char ** roWords = NULL,** enWords == NULL;
while (fgets(buffer, 100, dictionary))
{
counter++;
roWords = (char**)realloc(roWords, sizeof(char*)* counter);
enWords = (char**)realloc(enWords, sizeof(char*)* counter);
p = strtok(buffer, " \n");
roWords[counter - 1] = NULL;
roWords[counter - 1] = (char*)realloc(roWords, sizeof(char)* strlen(p));
strcpy(roWords[counter - 1], p);
p = strtok(NULL, " \n");
enWords[counter - 1] = NULL;
enWords[counter - 1] = (char*)realloc(enWords, sizeof(char)* strlen(p));
strcpy(enWords[counter - 1], p);
}
它是如何下降?是否有錯誤訊息? – JVMATL
記得爲終止的''\ 0''分配一個額外的字符。另外,設置後的重新分配看起來比它應該更復雜一些。使用'malloc'來分配單詞的內存也許更加清晰。 –
該程序適用於第一個循環,但是當它從de dictionray文件讀取第二行時,它再次進入函數,這很好,它增加了計數器,這也是上帝,但是當他再次輸入「roWords =(char * *)realloc(roWords,sizeof(char *)* counter);「它顯示調試斷言失敗。任何消化? –