Сначала это так:
aWord = (char *)realloc(aWord, strlen(inputString) + 1);
aWord = inputString;
Здесь вы выделяете место для aWord
, но затем перезаписываете возвращенный адрес на адрес, содержащийся в inputString
.Таким образом, каждая строка, которую вы читаете, в итоге перезаписывает предыдущую строку.Вы также должны использовать malloc
вместо realloc
, потому что вы хотите получить новый буфер вместо того, чтобы повторно использовать существующий.
Измените вызов realloc
на malloc and instead of assigning one pointer to the other, use
strcpy`, чтобы скопировать его.
aWord = malloc(strlen(inputString) + 1);
strcpy(aWord, inputString);
Затем в этой строке:
listWords = realloc(listWords, sizeof(char) * wordCount);
Вы выделяете достаточно памяти только для массива символов вместо массива указателей на символы.Это приводит к записи после конца выделенной памяти, вызывая неопределенное поведение .
Правильное распределение:
listWords = realloc(listWords, sizeof(char *) * wordCount);