【发布时间】:2016-11-11 22:49:18
【问题描述】:
目前我有一个研究项目,我和一个朋友真的不知道如何解决其中的一部分问题。
所以,这是一个 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->dictionary 是一个包含 26 个库的数组,当我从文件中得到一个单词时,我检查他的第一个字母并选择好的库(startup->dictionary[0] for 'a' ...)然后将单词放在结构的数组“单词”上,但是当我想要 printf 一些单词时,它是错误的字符串或错误的字符串。我很确定我们在指针上做错了,但在哪里......
我们做错了什么?
【问题讨论】:
-
我们需要一个完整的源代码示例,包括输入和输出
-
char** words[]看起来很可疑。你想要完成什么?无论如何,您没有转换正确的类型。注意编译器警告并提高它们。也不要投射malloc& friends 或void *一般的结果。