#include #include #include #include #define OUTPUT_BUFFER_SIZE (1024 * 5) // 5KB int main() { char *data = (char *)malloc(10 * 1024); // Allocate 10KB if (!data) { fprintf(stderr, "Failed to allocate memory.\n"); return 1; } ssize_t bytesRead = read(STDIN_FILENO, data, 10 * 1024); if (bytesRead == -1) { fprintf(stderr, "Failed to read data from file.\n"); free(data); return 1; } // Create a combined buffer to hold the output char *combined_output = malloc(2 * OUTPUT_BUFFER_SIZE + 50); // 50 extra bytes for text and safety if (!combined_output) { fprintf(stderr, "Failed to allocate memory for combined output.\n"); free(data); return 1; } // Format the output in a single buffer int offset = sprintf(combined_output, "Buffer 1 (First 5KB): "); memcpy(combined_output + offset, data, OUTPUT_BUFFER_SIZE); offset += OUTPUT_BUFFER_SIZE; offset += sprintf(combined_output + offset, " Buffer 2 (Second 5KB): "); memcpy(combined_output + offset, data + OUTPUT_BUFFER_SIZE, OUTPUT_BUFFER_SIZE); // Print everything in one go fwrite(combined_output, sizeof(char), offset + OUTPUT_BUFFER_SIZE, stdout); printf("\n"); // Clean up free(data); free(combined_output); return 0; }