In C you separate your implementation from your interface with header files. If you include .c files in .c files it will end up causing a lot of problems and start making includes order dependent (like how your code will break if you move #include "structures.c" down a few lines).
Generally you want a header file for each source file and put the stuff you want to share with other files in there (prototypes, typedefs, etc). For example, disk_utility.h would have prototypes for save_to_disk and read_from_disk and then instead of including disk_utility.c in your replay.c file you'd include disk_utility.h.
Without compiling the code I see a lot of things that are, at least, warnings. When you're learning you really want to compile with -Wall and pay attention to warnings.
It's a neat project and I hope you continue learning C, it's a great language.