also falls du Windows benutzt:
mit der Funktion GetFileTime (nicht sonderlich elegant) kannst du jeweils feststellen, wann in eine Datei zum letzten mal geschrieben wurde. Wenn du das nicht die ganze Zeit überprüfen willst, gibt es noch FindFirstChangeNotification, wie das genau tut, weiss ich nich, ich hab die Fkt nur mal gesehen, nicht ausprobiert. Aber Hilfe dazu lässt sich wie zu den anderen Funktionen, von denen du nicht weisst, wie sie aufzurufen sind, in der Msdn (gibts auch online:
http://msdn.microsoft.com/ ) nachschlagen. Genauere Infos über Dateien bekommst du übrigens auch mit FindFirstFile/_findfirst.
Wie du die letzte Zeile rausfindest:
Erst liest du die Datei ja ein. Jetzt speicherst du den Offset, an dem du stehengeblieben bist (SetFilePointer), oder falls das garantiert das Ende der Datei war die Dateilänge (GetFileSize).
Wenn jetzt am Schluss etwas hinzugefügt wurde, kannst du per SetFilePointer wieder an den gespeicherten Offset zurückkehren und dort weiterlesen.
Allerdings solltest du das nur machen, wenn du sicherstellen kannst, das keine unberechtigte Applikation die Datei beschreibt.
Ein gültiges Windows-HANDLE, dass für die Winapi-Funktionen ja benötigt wird, holst du dir mit:
HANDLE hFile = _get_osfhandle(_fileno(file));
falls FILE* file dein Dateizeiger ist.
Edit: Falls du die Datei die ganze Zeit geöffnet behälst und nicht die Position veränderst, brauchst du natürlich nichtmal den Dateizeiger speichern und neu setzen.
PS: auf Stdio-Ebene kannst du Dateizeiger auch mit ftell lesen und mit fseek setzen oder mit _filelength(_fileno(file)) die Dateilänge herausfinden (damit könntest du zB auch überprüfen, ob etwas dazugeschrieben worden ist), falls du die Winapi nicht verwenden willst/kannst, ist aber alles nicht so schön...
Edit2: shit, nochmal Rechtschreibfehler gefunden
-> Oh, ich bin ja so gewissenhaft geworden....