From 134f855b537b714eb98bc1e6e1e4790b4d6491a3 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Sat, 22 Jun 2024 20:01:14 +0200 Subject: Added writing and reading structs from files --- c-structs/.clang-format | 4 ++++ c-structs/Makefile | 13 +++++++++++++ c-structs/character.dat | Bin 0 -> 60 bytes c-structs/read.c | 24 ++++++++++++++++++++++++ c-structs/struct.h | 6 ++++++ c-structs/write.c | 25 +++++++++++++++++++++++++ 6 files changed, 72 insertions(+) create mode 100644 c-structs/.clang-format create mode 100644 c-structs/Makefile create mode 100644 c-structs/character.dat create mode 100644 c-structs/read.c create mode 100644 c-structs/struct.h create mode 100644 c-structs/write.c diff --git a/c-structs/.clang-format b/c-structs/.clang-format new file mode 100644 index 0000000..5f0e585 --- /dev/null +++ b/c-structs/.clang-format @@ -0,0 +1,4 @@ +BasedOnStyle: Chromium +ColumnLimit: 120 +IndentWidth: 4 + diff --git a/c-structs/Makefile b/c-structs/Makefile new file mode 100644 index 0000000..20694af --- /dev/null +++ b/c-structs/Makefile @@ -0,0 +1,13 @@ +all: write read + +write: + gcc write.c -o write + +read: + gcc read.c -o read + +clean: + -rm write + +tags: + ctags -R * diff --git a/c-structs/character.dat b/c-structs/character.dat new file mode 100644 index 0000000..1a10070 Binary files /dev/null and b/c-structs/character.dat differ diff --git a/c-structs/read.c b/c-structs/read.c new file mode 100644 index 0000000..b67974f --- /dev/null +++ b/c-structs/read.c @@ -0,0 +1,24 @@ +#include + +#include "struct.h" + +int main(void) { + printf("Read struct\n"); + + Character ch; + + FILE* file = fopen("character.dat", "rb"); + if (file == NULL) { + perror("Error opening file"); + return 1; + } + + fread(&ch, sizeof(Character), 1, file); + fclose(file); + + printf("Name: %s\n", ch.name); + printf("Health: %d\n", ch.health); + printf("Damage: %.1f\n", ch.damage); + + return 0; +} diff --git a/c-structs/struct.h b/c-structs/struct.h new file mode 100644 index 0000000..38a0cc7 --- /dev/null +++ b/c-structs/struct.h @@ -0,0 +1,6 @@ +typedef struct { + char name[50]; + int health; + float damage; +} Character; + diff --git a/c-structs/write.c b/c-structs/write.c new file mode 100644 index 0000000..e83531a --- /dev/null +++ b/c-structs/write.c @@ -0,0 +1,25 @@ +#include +#include + +#include "struct.h" + +int main(void) { + printf("Write struct\n"); + + Character ch; + + strcpy(ch.name, "John Doe"); + ch.health = 30; + ch.damage = 5.9; + + FILE* file = fopen("character.dat", "wb"); + if (file == NULL) { + perror("Error opening file"); + return 1; + } + + fwrite(&ch, sizeof(Character), 1, file); + fclose(file); + + return 0; +} -- cgit v1.2.3