在目前我有一個項目的研究和我和一個朋友並不真正知道如何解決這個問題的一部分。在一個結構體中的數組並填充他
所以,這是一個C項目。我有2個結構:
struct Lib {
char letter;
int capacity;
int size;
char** words[200000];
};
typedef struct Lib Library;
struct Program {
char* loadedFileName[50];
FILE* f;
Library* dictionary;
int totalwords;
};
typedef struct Program Program;
而這個功能:
void fillDicoFromFile(Program* startup){
rewind(startup->f);
while(!feof(startup->f) && !ferror(startup->f)){
char* word = malloc(sizeof(char) * 30);
fscanf(startup->f, "%s", word);
int indexLib = word[0] - 97;
int sizeLib = startup->dictionary[indexLib].size;
startup->dictionary[indexLib].words[sizeLib] = (char*)malloc(sizeof(char) * (strlen(word)+1));
startup->dictionary[indexLib].words[sizeLib] = word;
startup->dictionary[indexLib].size++;
free(word);
}
CountTotalWords(startup);
}
startup->詞典是26圖書館的陣列,而當我從文件中得到一個字,我檢查他的第一個字母,選擇好的庫(startup-> dictionary [0]爲'a'...),然後將該單詞放在結構體的數組「word」中,但是當我想printf某些單詞時,它是一個錯誤的字符串或錯誤。我很確定我們在指針上做錯了,但在哪裏...
我們做錯了什麼?
我們需要一個完整的源代碼示例,包括輸入和輸出 – KevinDTimm
'char ** words []'看上去很腥。你想要完成什麼?無論如何,你不會選擇正確的類型。注意編譯器警告並加以糾正。一般來說,也不要將'malloc'&friends或'void *'的結果強制轉換。 – Olaf