В этом коде
char *p;
p = malloc(n*LEN*sizeof(char));
char *name = malloc(LEN*sizeof(char));
int i;
for(i = 0; i < n; i++) {
gets(name);
strcpy((p + i), name);
printf("%s \n", (p + i));
strncpy(name, "", LEN);
}
у вас есть один массив char
, и вы помещаете строку в начало, когда i
равно 0, например, «Hello».Когда i
равно 1, если вы используете «мир» в качестве следующего имени, оно помещается в p[1]
, поэтому p[0]
по-прежнему «H», что дает вам 'HWorld'
.
. Вам нужноchar **
и malloc
каждый char *
внутри цикла.(Не забывайте free
, что вы используете malloc позже)