Вы никогда не назначаете возвращаемое значение malloc()
для quote[i]
, поэтому они останутся NULL
(если вам повезет):
char **quote = malloc(sizeof(char*) * (size_t)SIZE_QUOTE);
long i;
for(i = 0; i < SIZE_QUOTE; i++){
if(!(malloc(sizeof(char) * WORD_LENGTH)))
Вместо этого должно быть что-то вроде этого:
char **quote = malloc(sizeof(char*) * (size_t)SIZE_QUOTE);
for(int i = 0; i < SIZE_QUOTE; i++){
quote[i] = malloc(sizeof(char) * WORD_LENGTH);
if(!quote[i])
Также вы можете избежать malloc()
полной и статической инициализации этого массива, если известны все размеры:
char quote[SIZE_QUOTE][WORD_LENGTH] = {{'\0'}};
Кроме того, вы должны быть free()
-инженер quote[i]
в конце:
for(int i = 0; i < SIZE_QUOTE; ++i) free(quote[i]);
free(quote);
Есть и другие ошибки, которые уже были отмечены в комментариях, поэтому я не буду подробно останавливаться на этом.