nilosgr Δημοσ. 3 Δεκεμβρίου 2011 Δημοσ. 3 Δεκεμβρίου 2011 Επειδή απ'ότι φαίνεται είσαι καινούργιος στον προγραμματισμό, αν σκοπεύεις να ασχοληθείς σοβαρά με εφαρμογές σε C πρέπει να ξέρεις ότι η fwrite και η fread δεν είναι portable συναρτήσεις. Ο λόγος είναι πως γράφουν τα bytes ακριβώς όπως τα βρίσκουν από τη RAM στο αρχείο κι έτσι όταν πας τα αρχεία/πρόγραμμα σε διαφορετικό σύστημα, το endianess μπορεί να είναι διαφορετικό και να διαβάζεις τα δεδομένα ανάποδα! Επίσης και σε ίδιο endianess να πας μπορεί να υπάρξουν προβλήματα με ta paddings των αρχείων. Οπότε καλύτερα να ξεκινήσεις να τις αποφεύγεις και να χρησιμοποιείς fprintf, fscanf μέχρι να προχωρήσεις σε POSIX. Οι fprintf() - fscanf() δεν ειναι για BINARY
παπι Δημοσ. 3 Δεκεμβρίου 2011 Δημοσ. 3 Δεκεμβρίου 2011 @vrixen το fseek(fp,sizeof(struct player)*(-1),SEEK_CUR); νομιζω βγαζει MAX_INT - sizeof(struct player) Κανε ενα cast σε signed ( (long) sizeof(struct player) ) * -1 ή -( (long) sizeof(..))
Erevis Δημοσ. 3 Δεκεμβρίου 2011 Δημοσ. 3 Δεκεμβρίου 2011 Οι fprintf() - fscanf() δεν ειναι για BINARY Πού του είπα να χρησιμοποιεί binary? Ειδικά για το πρόβλημά του είναι overkill.
nilosgr Δημοσ. 3 Δεκεμβρίου 2011 Δημοσ. 3 Δεκεμβρίου 2011 Πού του είπα να χρησιμοποιεί binary? Ειδικά για το πρόβλημά του είναι overkill. Ο Leuteris ειπς οτι θελει δυαδικο αρχειο
Erevis Δημοσ. 3 Δεκεμβρίου 2011 Δημοσ. 3 Δεκεμβρίου 2011 Ο Leuteris ειπς οτι θελει δυαδικο αρχειο Ναι κι εγώ λέω ότι καλύτερα να πάει σε text αρχεία για τον λόγο που ανέφερα παραπάνω. Δεν εννoούσα να χρησιμοποιήσει fscanf ή fprintf στα binary. Ίσως έχεις δίκιο στο ότι δε το είπα καθαρά, αλλά το θεώρησα αυτονόητο .
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα