#include #include #include int main(int argc, char **argv) { char *line; FILE *input; char **buffer; int lines, i; if (argv[1]) { input = fopen(argv[1], "r"); if (!input) exit(1); } else { input = stdin; } line = (char *) calloc(81, sizeof(char)); lines = 0; buffer = (char **) calloc(1, sizeof(char *)); while (fgets(line, 81, input)) { char **tmp; buffer[lines] = calloc(81, sizeof(char)); strncpy(buffer[lines], line, 80); printf("Got and copied line %s\n", buffer[lines]); tmp = (char **) realloc((void *) buffer, sizeof(char *) * ++lines); if (!buffer) { perror("realloc error"); exit(1); } if (tmp != buffer) buffer = tmp; } printf("Regurgitating...\n"); for (i = 0; i < lines; i++) printf("%s\n", buffer[i]); return 0; }