Δημοσιεύτηκε: 02 Ιουν 2012, 15:49
c7p έγραψε:
Το θέμα είναι ότι ήθελα να μετακινήσω το τέλος του αρχείου στην ουσία -16 byte ώστε να διαγραφή η τελευταία καταγραφή ιδίου μεγέθους.
Η λύση τελικά είναι η χρήση της ftruncate, τουλάχιστον σε Unixοειδή
http://linux.about.com/library/cmd/blcmdl2_ftruncate.htm
Πάντως δεν είναι δύσκολο να το κάνεις με χρήση προσωρινού αρχείου, για να είναι portable ο κώδικάς σου (με αντίτιμο πως η συγκεκριμένη διαδιακασία θα εκτελείται πιο αργά). Αντί για (f)truncate(...) κάνεις fread() το πλήθος των bytes που θέλεις και μετά το κάνεις fwrite() σε ένα προσωρινό αρχείο. Κατόπιν σβήνεις το αρχικό αρχείο με remove() και μετονομάζεις με rename() το προσωρινό.