Bajki opowiadasz. Int mieści 2^31 - 1 czyli 2147483647 sekund. Jeśli podzielimy to przez 3600 otrzymamy godziny: 596523.235278 godzin, jeśli to z kolei podzielisz przez 24, to otrzymasz liczbę dni: 24855.1348032, a to po podzieleniu przez 365 da ci liczbę lat, czyli: 68.0962597349. Chcesz powiedzieć, że spędziłeś na komputerze ponad 68 lat?
kiedy to ustawi plik do zapisu wymazując poprzedni kontent, ale wyłączony zostanie przed wykonaniem
fclose(plik);
to nic się nie zapisze.
Dlatego z reguły do przechowywania używa się baz danych, albo możesz zaimplementować własne przywracanie danych w obliczu odcięcia zasilania, tak jak robi to np. Subversion czy git.
Zamiast od razu nadpisywać stare dane nowymi (właściwie to nawet nie nadpisujesz, tylko kasujesz stare a dopiero potem piszesz nowe), zapisuj nowe dane do drugiego pliku.
Po zamknięciu drugiego pliku, usuń pierwszy plik (ten ze starymi danymi) i zmień nazwę drugiego pliku na taką jaką miał oryginalny plik.
W zależności od czasu wystąpienia awarii, po ponownym uruchomieniu masz jedną z sytuacji:
jest tylko plik o pierwszej nazwie – wszystko w porządku.
są oba pliki – nie wiesz w jakim stanie jest drugi plik, więc go usuwasz, zostawiasz tylko pierwszy (masz może nie najnowsze dane, ale na pewno poprawne).
jest tylko plik o drugiej nazwie – ponieważ pierwszy usunąłeś dopiero po zamknięciu drugiego, więc wiesz, że drugi jest poprawny, zmieniasz jego nazwę na pierwszą.