Στο manual της fclose λέει το εξής:
The fclose function dissociates the named stream from its underlying file or set of functions. If the stream was being used for output, any buffered data is written first, using fflush(3).
Και στα ελληνικά βρήκα αυτό:
H fclose( ) κάνει κάτι περισσότερο από το να ελευθερώνει απλώς το δείκτη του αρχείου.
Γράφει οποιαδήποτε δεδομένα δεν έχουν γραφεί στο δίσκο και κάνει ένα τυπικό κλείσιμο του αρχείου στο επίπεδο του λειτουργικού συστήματος
Πρακτικά τι γράφει η fclose στο αρχείο, όταν αυτή καλείται;
Έχω σοβαρό πρόβλημα καθώς όταν καλείται η fclose μου χαλάει το αρχείο..
Τι μπορώ να κάνω για να το αποτρέψω;
Εμφάνιση 1-11 από 11
-
22-03-06, 21:32 C, fclose, Τι γράφει όταν καλείται; #1
-
22-03-06, 21:45 #2
Συνήθως όταν γράφεις σε ένα stream, χρησιμοποιείται ένας ενδιάμεσος buffer, ο οποίος γράφεται στο δίσκο όταν γεμίσει ή όταν κληθεί μια συνάρτηση τύπου flush() η οποία γράφει τα περιεχόμενα ενός buffer στον δίσκο και φυσικά αδειάζει το buffer. Το buffering γίνεται για λόγους καλύτερων επιδόσεων, καθώς τα μαζικά writes από buffers σε δίσκους είναι πολύ πιο γρήγορα από την εγγραφή byte - byte. Το αρχείο μπορεί να σου χαλάει αν στο buffer έχεις γράψει λάθος δεδομένα.
-
22-03-06, 21:52 #3
Αρχικό μήνυμα από teacake
-
22-03-06, 22:03 #4
Σωστά κατάλαβες.
-
23-03-06, 10:27 #5
Γενικά η fclose δεν παίζει να φταίει για το πρόβλημα... και να μην την καλέσεις εσύ, απλά θα σου πετάξει ένα warning και το σύστημα θα την καλέσει αυτόματα.
-
23-03-06, 10:41 #6
Μήπως έχεις ανοίξει το αρχείο για γράψιμο αντί για διάβασμα;
And how can we win, when fools can bekingsISO-approved?
[MUSE: Knights of Cydonia]
-
23-03-06, 11:42 #7
Αρχικό μήνυμα από Πύρρος
-
23-03-06, 12:58 #8
Υπάρχει περίπτωση, αν έχω ανοίξει ένα αρχείο πχ. bla.txt στη main μου και μετά καλέσω μία συνάρτηση που ανοίγει και αυτή το bla.txt, το γράφει και πριν τερματίσει το κλείνει, να υπάρξουν προβλήματα με το προηγούμενο άνοιγμα;
-
23-03-06, 13:03 #9
Δεν μου ακούγεται και πολύ καλό αυτό... Γιατί δεν κάνεις ότι είναι να κάνεις με τη συνάρτηση και το αρχείο και μόλις τελειώσει η συνάρτηση και γυρίσει στη main να το ανοίξεις πάλι από εκεί?
Στην main το ανοίγεις για read ή για read/write? Αν θες πέτα και λίγο κώδικα σε ένα post για να μην μιλάμε έτσι γενικά
-
23-03-06, 13:52 #10
Σ΄ευχαριστώ
Ο κώδικας είναι σκέτο χάος, πίστεψέ με!
2,700 γραμμές.. Έκανα τρελή μαλακία που δεν το debuggαρα κομμάτι κομμάτι..
-
11-04-06, 17:02 #11
Δυο μικρες συμβουλες...
1)Σπασε τον κωδικα. τωρα. αμεσως. σε δυο η περισσοτερα αρχεια. οχι σε 10, αλλα 2-3 θα σαι οκ.
2)Αμα χρησιμοποιεις το ιδιο FILE * παντου, read/write (κ με λιγη προσπαθεια κ asynchronous) ,δεν εχεις προβλημα. τα buffers απλα εσυ τα ξεχνας. τα διαχειριζεται αυτοματα... αν τωρα εχεις δυο δεικτες στο ιδιο αρχειο, πρεπει να κανεις flush() καθε φορα που εναλλασεσαι μεταξυ των δυο δεικτων στον κωδικα. ετσι το δευτερο pointer θα δειχνει στο refreshed file αν και κατα πασα πιθανοτητα θα εχεις προβληματα . οποτε, ενας Pointer.
φιλικα
voskΌλα γίνονται. Kαι όλα είναι αδύνατα.
Εξαρτάται από το πόση τρέλα σου λείπει η σου περισσεύει…
-vosk
http://www.eaimproved.eu
Παρόμοια Θέματα
-
όταν δεν είναι κλειδωμένο όλα ok, όταν κλειδωθεί, πρόβλημα..
Από unit345 στο φόρουμ Wireless NetworkingΜηνύματα: 8Τελευταίο Μήνυμα: 24-08-08, 22:24 -
Όταν η HOL σε γράφει στα .........
Από kakavia στο φόρουμ Vodafone ADSLΜηνύματα: 14Τελευταίο Μήνυμα: 19-06-08, 11:31 -
Γράφει DVD δεν γράφει CD
Από paul77gr στο φόρουμ Σκληροί δίσκοι, αποθηκευτικά μέσα και λοιπά περιφερειακάΜηνύματα: 3Τελευταίο Μήνυμα: 14-07-07, 20:21 -
οτε: Καλείται να πληρώσει 13 εκατ. ευρώ στον Alpha
Από chrand στο φόρουμ ΕιδήσειςΜηνύματα: 10Τελευταίο Μήνυμα: 07-06-06, 18:36
Bookmarks