Кажется, у меня ошибка сегментации, но я не могу понять, где и почему это происходит. Любой вклад будет полезен.
Я в основном пытаюсь прочитать входные данные как символы, сохранить их в слове, пока я не достигну пробела, и когда я попал в пробел, сохранить это слово в wordList.
Все это должно быть сделано без сохранения в памяти (необходимо использовать динамическое распределение).
Соответствующий код:
char* word;
int WFactor = 30;
int WLFactor = 30;
char** wordList;
int wordCount = 0;
int letterCount = 0;
word = (char*)malloc(sizeof(char) * WFactor);
wordList = (char**)malloc(sizeof(char*) * WLFactor);
if( word == NULL ){
free(word);
free(wordList);
fprintf(stderr, "Memory Allocation Failure");
exit(1);
}
if(wordList == NULL){
fprintf(stderr, "Memory Allocation Failure");
exit(1);
}
char cur = '*';
while(cur!=EOF){
if(letterCount == WFactor){
WFactor = WFactor * 2;
word = realloc(word, sizeof(char)*WFactor);
if(word == NULL){
free(word);
free(wordList);
fprintf(stderr, "Memory Re-Allocation Failure");
exit(1);
}
}
cur = getchar();
if(cur!=EOF && cur!= ' '){
putchar(cur);
word[letterCount] = cur;
letterCount++;
}
if(cur == ' '){
if(wordCount == WLFactor){
WLFactor = WLFactor*2;
wordList = realloc(wordList, sizeof(char*)*WLFactor);
if(wordList == NULL){
free(word);
free(wordList);
fprintf(stderr, "Memory Re-Allocation Failure");
exit(1);
}
}
printf("%s", "e");
wordList[wordCount] = word;
wordCount++;
letterCount =0;
word = NULL;
WFactor = 19;
printf("HERE");
word = malloc(sizeof(char)*WFactor);
if(word == NULL){
free(wordList);
fprintf(stderr, "Memory Allocation Failure");
exit(1);
}
}
}