#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct data_list {
struct data_list *next;
char data[];
};
int main(int argc, char **argv)
{
char buf[1024];
struct data_list data_list = {0}, *p;
int l;
fputs("文字列を入力してください。ctrl-dで終了:\n", stderr);
for (;;) {
fputs("? ", stderr);
if (fgets(buf, sizeof(buf) - 1, stdin) == NULL)
break;
l = strlen(buf);
for (p = &data_list; p->next != NULL; p = p->next)
;
p->next = malloc(sizeof(data_list) + l + 1);
if (p->next == NULL) {
perror("Mallocに失敗しました");
return 1;
}
p->next->next = NULL;
strcpy(p->next->data, buf);
}
putc('\n', stderr);
for (p = data_list.next; p != NULL; p = p->next)
fputs(p->data, stdout);
return 0;
}