Δημοσιεύτηκε: 02 Ιουν 2012, 15:49
από migf1
c7p έγραψε:
Το θέμα είναι ότι ήθελα να μετακινήσω το τέλος του αρχείου στην ουσία -16 byte ώστε να διαγραφή η τελευταία καταγραφή ιδίου μεγέθους.
Η λύση τελικά είναι η χρήση της ftruncate, τουλάχιστον σε Unixοειδή

http://linux.about.com/library/cmd/blcmdl2_ftruncate.htm

Πάντως δεν είναι δύσκολο να το κάνεις με χρήση προσωρινού αρχείου, για να είναι portable ο κώδικάς σου (με αντίτιμο πως η συγκεκριμένη διαδιακασία θα εκτελείται πιο αργά). Αντί για (f)truncate(...) κάνεις fread() το πλήθος των bytes που θέλεις και μετά το κάνεις fwrite() σε ένα προσωρινό αρχείο. Κατόπιν σβήνεις το αρχικό αρχείο με remove() και μετονομάζεις με rename() το προσωρινό.