Προγραμματισμός H/Y Ενότητα 7: Αρχεία Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί Ενότητας Απόκτηση βασικών γνώσεων στην χρήση διαχείρησης αρχείων μέσω γλώσσας προγραμματισμού 4
Περιεχόμενα Αρχεία τύπου text και τύπου binary. Άνοιγμα, ανάγνωση, εγγραφή και κλείσιμο αρχείου (fopen, fclose, fsanf, fprintf, fread, fwrite). 5
Αρχεία Αρχεία τύπου text και τύπου binary. Υπάρχουν 2 κατηγορίες αρχείων (files): τα αρχεία κειμένου (text files), και τα δυαδικά αρχεία (binary files), ανάλογα με τον τρόπο που είναι αποθηκευμένη η πληροφορία σε αυτά. 6
Αρχεία κειμένου Τα αρχεία κειμένου περιέχουν χαρακτήρες σε κάποια κωδικοποίηση (όπως η ASCII) σε μορφή που μπορούμε να διαβάσουμε. Κάθε γραμμή του αρχείου τελειώνει με έναν ειδικό χαρακτήρα που υποδηλώνει το τέλος της γραμμής, οποίος εξαρτάται από το λειτουργικό σύστημα. 7
Δυαδικά αρχεία Τα δυαδικά αρχεία δεν περιέχουν απαραίτητα αναγνώσιμους χαρακτήρες. Συνήθως, μάλιστα, δεν έχουν, επομένως όταν ανοίγουμε κάποιο δυαδικό αρχείο εμφανίζονται «ακαταλαβίστικα». Αρχεία λογισμικού, μουσικής, φωτογραφίας, βίντεο, είναι τέτοια. Τα περιεχόμενά του δεν χωρίζονται σε γραμμές και δεν γίνεται μετατροπή χαρακτήρων. Δεν υπάρχει ειδικός χαρακτήρας που να υποδηλώνει το τέλος του αρχείου. Οι λειτουργίες ανάγνωσης και εγγραφής είναι ταχύτερες. Συνήθως είναι μικρότερου μεγέθους από τα κειμένου. 8
Άνοιγμα αρχείου Το άνοιγμα ενός αρχείου γίνεται με τη συνάρτηση fopen(). δείκτης = fopen( διαδρομή και όνομα αρχείου, τρόπος ); όπου ο δείκτης πρέπει να είναι τύπου FILE, η οποία είναι μια δομή (structure). Η διαδρομή περιλαμβάνει τον δίσκο, τους υποκαταλόγους και το όνομα του αρχείου. Πρέπει να είναι μέσα σε διπλά εισαγωγικά. Ο τρόπος υποδεικνύει την κατηγορία του αρχείου (κειμένου ή δυαδικό) και αν ανοίγει για ανάγνωση, εγγραφή, προσθήκη, κλπ. Πρέπει να είναι μέσα σε διπλά εισαγωγικά. Αν το αρχείο ανοίξει επιτυχώς, η fopen() επιστρέφει έναν δείκτη. Ο δείκτης χρησιμοποιείται για κάθε λειτουργία άνω στο αρχείο. Αλλιώς επιστρέφει την τιμή NULL. 9
Ανάγνωση από αρχείο κειμένου Συνήθως χρησιμοποιούμε την συνάρτηση fscanf(). Έχει ίδιες παραμέτρους με την scanf(), και επιπρόσθετα τον δείκτη του αρχείου (τύπου FILE): fscanf( δείκτης, %κωδικός,..., &μεταβλητή,... ); Η συνάρτηση επιστρέφει το πλήθος των στοιχείων που διαβάστηκαν. Αν φτάσουμε στο τέλος του αρχείου ή συμβεί σφάλμα, επιστρέφει το EOF. Με την συνάρτηση feof() μπορούμε να διαπιστώσουμε ποιο από τα δύο. 10
Εγγραφή αρχείου Για την εγγραφή συνήθως χρησιμοποιούμε τη συνάρτηση fprintf(). Η μορφή της είναι παρόμοια με της printf(), με επιπλέον τον δείκτη στο αρχείο (που είναι τύπου FILE). fprintf( δείκτης, %κωδικός,..., μεταβλητή,... ); Η συνάρτηση επιστρέφει το πλήθος των χαρακτήρων που γράφηκαν, αλλιώς επιστρέφει αρνητικό αριθμό. 11
Δυαδικά αρχεία Για την ανάγνωση από αρχείο χρησιμοποιείται η fread(). Για την εγγραφή σε αρχείο χρησιμοποιείται η fwrite(). Για την μετακίνηση σε άλλη θέση στο αρχείο χρησιμοποιείται η fseek(). Για την εύρεση της τρέχουσας θέσης στο αρχείο χρησιμοποιείται η ftell(). 12
Βιβλιογραφία Συνδουκάς Δημήτρης 2007, Εισαγωγή στη γλώσσα προγραμματισμού C, Εσωτερική έκδοση του ΤΕΙ Χατζηγιαννάκης Ν. Μ., Η Γλώσσα C σε βάθος (4η έκδοση), Εκδόσεις Κλειδάριθμος, 2012, ISBN: 978-960-461-498-1. Τσελίκης Γ. Σ., Τσελίκας Ν. Δ., C: Aπό τη Θεωρία στην Εφαρμογή, Εκδότης: Νικόλαος Τσελίκας, 2012, ISBN: 978-960-93-1961-4. Schildt H., Οδηγός της C (3η έκδοση), Εκδόσεις Χ. Γκιούρδα και ΣΙΑ, 2000, ISBN: 978-960-512-228-7. Zhang T., Μάθετε τη C σε 24 Ώρες, Εκδόσεις Χ. Γκιούρδα και ΣΙΑ, 2000, ISBN: 960-512-233-2. Aitken Jones, Πλήρες Εγχειρίδιο της C, Εκδόσεις Χ. Γκιούρδα και ΣΙΑ, 2006, ISBN: 978-960-512-491-5. 13
Τέλος Ενότητας
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 15
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 16