Мне кажется, проблема в том, что вы не выделяете память для своего списка.Вот пример кода, который я сделал.
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#define LIST_SIZE 2
#define MAX_WORD 100
void display(char**);
int main() {
char buffer[100];
char** list;
int i;
int n;
// allocate
list = (char**)malloc(sizeof(char*) * LIST_SIZE);
for(i = 0; i < LIST_SIZE; i++) {
scanf("%99s",buffer);
n = strlen(buffer);
list[i] = (char*)malloc(sizeof(char) * n);
strcpy(list[i], buffer);
}
display(list);
return 0;
}
void display(char** str) {
int i;
printf("-- output ---\n");
for(i = 0; i < LIST_SIZE; i++) {
printf("%s\n", str[i]);
}
}
Я сделал список только выделить место, необходимое для слова.Если вы хотите исправить, вам не нужен буфер и strcpy.