89 lines
2.0 KiB
C
89 lines
2.0 KiB
C
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#define BUFFER_SIZE 256
|
||
|
|
||
|
void create_file(const char *filename) {
|
||
|
FILE *file = fopen(filename, "w");
|
||
|
if (file == NULL) {
|
||
|
printf("Error creating file: %s\n", filename);
|
||
|
exit(1);
|
||
|
}
|
||
|
fclose(file);
|
||
|
}
|
||
|
|
||
|
void write_to_file(const char *filename, const char *content) {
|
||
|
FILE *file = fopen(filename, "w");
|
||
|
if (file == NULL) {
|
||
|
printf("Error opening file: %s\n", filename);
|
||
|
exit(1);
|
||
|
}
|
||
|
fputs(content, file);
|
||
|
fclose(file);
|
||
|
}
|
||
|
|
||
|
void read_from_file(const char *filename) {
|
||
|
FILE *file = fopen(filename, "r");
|
||
|
if (file == NULL) {
|
||
|
printf("Error opening file: %s\n", filename);
|
||
|
exit(1);
|
||
|
}
|
||
|
char ch;
|
||
|
while ((ch = fgetc(file)) != EOF) {
|
||
|
putchar(ch);
|
||
|
}
|
||
|
fclose(file);
|
||
|
}
|
||
|
|
||
|
void append_to_file(const char *filename, const char *content) {
|
||
|
FILE *file = fopen(filename, "a");
|
||
|
if (file == NULL) {
|
||
|
printf("Error opening file: %s\n", filename);
|
||
|
exit(1);
|
||
|
}
|
||
|
fputs(content, file);
|
||
|
fclose(file);
|
||
|
}
|
||
|
|
||
|
void delete_file(const char *filename) {
|
||
|
if (remove(filename) != 0) {
|
||
|
printf("Error deleting file: %s\n", filename);
|
||
|
exit(1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int main() {
|
||
|
char filename[BUFFER_SIZE];
|
||
|
char input_buffer[BUFFER_SIZE];
|
||
|
|
||
|
memset(filename, 0, BUFFER_SIZE);
|
||
|
memset(input_buffer, 0, BUFFER_SIZE);
|
||
|
|
||
|
printf("Enter the filename: ");
|
||
|
|
||
|
// last byte can be non-zero -> leak
|
||
|
fgets(filename, BUFFER_SIZE, stdin);
|
||
|
|
||
|
create_file(filename);
|
||
|
|
||
|
printf("Enter content to write to the file: ");
|
||
|
fgets(input_buffer, BUFFER_SIZE, stdin);
|
||
|
write_to_file(filename, input_buffer);
|
||
|
|
||
|
printf("Content of the file:\n");
|
||
|
read_from_file(filename);
|
||
|
|
||
|
printf("\nEnter content to append to the file: ");
|
||
|
fgets(input_buffer, BUFFER_SIZE, stdin);
|
||
|
append_to_file(filename, input_buffer);
|
||
|
|
||
|
printf("\nContent of the file after appending:\n");
|
||
|
read_from_file(filename);
|
||
|
|
||
|
delete_file(filename);
|
||
|
|
||
|
return 0;
|
||
|
}
|