You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
|
|
#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;
|
|
}
|