#include #include #include #define MAX_LINES 100 #define MAX_LEN 1024 int main(int argc, char * argv) { char * lines[MAX_LINES]; int lines_collected = 0; while (!feof(stdin)) { lines[lines_collected] = malloc(MAX_LEN); fgets(lines[lines_collected], MAX_LEN, stdin); if (!strcmp(lines[lines_collected], "\n")) { free(lines[lines_collected]); break; } lines_collected++; if (lines_collected == MAX_LINES) { printf("Can't have any more lines! If this happens, perhaps a dynamic list would be a good idea.\n"); break; } } printf("Collected %d lines from input.\n", lines_collected); int total_size = 0; for (int i = 0; i < lines_collected; ++i) { total_size += strlen(lines[i]); } printf("The total size of collected text was %d characters.\n", total_size); char * buffer = malloc(total_size + 1 /* for the null */); buffer[0] = '\0'; for (int i = 0; i < lines_collected; ++i) { strcat(buffer, lines[i]); free(lines[i]); } printf("Final buffer looks like:\n%s\n", buffer); free(buffer); return 0; }