ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C Αρχεία (files)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Indexing.
Advertisements

Το αλφαριθμητικό (string)
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
ΕΙΣΑΓΩΓΗ ΣΤΟ DOS (Disk Operating System)
ΤΑΞΗ Γ ΓΥΜΝΑΣΙΟΥ Βασικές Έννοιες Επανάληψη (2).
ΕΝΟΤΗΤΑ 1 – Κεφάλαιο 2: Το Υλικό του Υπολογιστή
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
Τύποι πραγματικών αριθμών
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 3: Δείκτες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ι. Σαρρής, τηλ.
Στο λειτουργικό σύστημα Windows, υπάρχουν εικονίδια (icons) τα οποία αναπαριστούν τις διάφορες οντότητες (φυλαγμένες πληροφορίες, προγράμματα που κάνουν.
Ολυμπιάδα Πληροφορικής
Ολυμπιάδα Πληροφορικής
Κεφάλαιο 2 Το Εσωτερικό του υπολογιστή
Πληροφορική, Β Γυμνασίου
1 ΧΡΗΣΗ Η/Υ, ΑΛΕΞΗΣ ΜΠΡΑΪΛΑΣ, 1998 Εφαρμογές Υπολογιστών.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
Ο προσωπικός υπολογιστής εσωτερικά
MΑΘ 106/3122Ξενοφών Ζαμπούλης ΜΑΘ 106/3122 Γλώσσα Προγραμματισμού Δείκτες (Pointers)
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
6/15/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Static Random Access Memory.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
ΗΥ Καλοκαιρινός Γιώργος1 PCI Bus Pin List. ΗΥ Καλοκαιρινός Γιώργος2 Initiator Target.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Βασικά στοιχεία της Java
ΗΥ Καλοκαιρινός Γιώργος1 Bus. ΗΥ Καλοκαιρινός Γιώργος2 MCS51.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
ΕΝΟΤΗΤΑ 1 – Κεφάλαιο 2: Το εσωτερικό του Υπολογιστή Β΄ τάξη Λέξεις Κλειδιά: Μητρική πλακέτα, κάρτες επέκτασης, κάρτα οθόνης, κάρτα ήχου, τροφοδοτικό, Κεντρική.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γιώργος Μαγουλάκης Εξάμηνο: Εαρινό 2015 ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Τμ. Μηχανικών Πληροφορικής.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
Διαχείριση Διαδικτυακής Φήμης! Do the Online Reputation Check! «Ημέρα Ασφαλούς Διαδικτύου 2015» Ε. Κοντοπίδη, ΠΕ19.
Μάθημα 1 ΔΙΑΔΙΚΤΥΟ Διευθύνσεις και Πρωτόκολλα. Διευθύνσεις Πως αποκωδικοποιούνται οι διευθύνσεις: Πρωτόκολλο://server.domain.
Μαθαίνω με “υπότιτλους”
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Διευθύνσεις και Πρωτόκολλα στο διαδίκτυο
Ερωτήσεις –απαντήσεις Ομάδων Εργασίας
Εισαγωγή στον Προγ/μό Υπολογιστών
JSIS E 111: Elementary Modern Greek
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Επεξεργασία Κειμένου Διδακτική προσέγγιση των λογισμικών γενικής χρήσης Ζωγραφική Λογιστικά φύλλα Βάσεις δεδομένων.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
ΤΑΞΗ Γ ΓΥΜΝΑΣΙΟΥ Βασικές Έννοιες Επανάληψη (2).
Κεφάλαιο 10 Streams.
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
aka Mathematical Models and Applications
ΕΝΣΤΑΣΕΙΣ ΠΟΙΟΣ? Όμως ναι.... Ένα σκάφος
ΤΙ ΕΙΝΑΙ ΤΑ ΜΟΆΙ;.
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Find: ρc [in] from load (4 layers)
Εξαιρέσεις [Exceptions]
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Μεταγράφημα παρουσίασης:

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C Αρχεία (files)

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 2 Αρχεία (Files) Ένα αρχείο (file) είναι ένα γενικό όνομα που δίνεται σε μια ροή δεδομένων (stream). Είναι μια ακολουθία χαρακτήρων (bytes) και μπορεί να βρεθεί σε κατάσταση Input / Output (θα αναφέρονται στη συνέχεια ως Ι/Ο). Σε διαδικασίες input τα bytes ρέουν από μια συσκευή (πληκτρολόγιο, δισκέτα, σύνδεση δικτύου κλπ) προς την κεντρική μνήμη του Η/Υ. Σε διαδικασίες output τα bytes ρέουν από την κεντρική μνήμη προς μια συσκευή (πληκτρολόγιο, δισκέτα, σύνδεση δικτύου κλπ) πρόγραμμα file φυσική συσκευή

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 3 Ένα file stream έχει μερικές σημαντικές ιδιότητες (ή χαρακτηριστικά) : –Μήκος που είναι ο αριθμός χαρακτήρων που το αποτελούν –Αρχή που είναι ο πρώτος χαρακτήρας του stream –Τέλος που είναι η θέση (position) μετά από τον τελευταίο χαρακτήρα του stream. –Τρέχουσα θέση (current position) που είναι ο δείκτης θέσης (index position) του χαρακτήρα στο stream όπου θα ξεκινήσει η επόμενη λειτουργία read ή write. Ο 1ος χαρακτήρας σε ένα file stream είναι η θέση 0.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 4 Ένα αρχείο είναι στην πραγματικότητα μια σειριακή ακολουθία χαρακτήρων (bytes) :

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 5 Οι ακολουθίες χαρακτήρων (bytes) μπορούν να αντιπροσωπεύουν χαρακτήρες ASCII, δεδομένα σε πρωτογενή μορφή, εικόνες γραφικών, ψηφιακό ήχο, ψηφιακό video και κάθε είδους πληροφορία που χρειάζεται μια εφαρμογή. Ο μηχανισμός του συστήματος Ι/Ο είναι να μετακινεί bytes από τις συσκευές προς την κεντρική μνήμη και αντίστροφα. Η μεταφορά αυτή εμπεριέχει συχνά μηχανικές κινήσεις όπως η περιστροφή ενός δίσκου ή το πάτημα των πλήκτρων. Ο χρόνος που απαιτείται για τις μεταφορές αυτές είναι τεράστιος συγκρινόμενος με τον χρόνο που χρειάζεται ο επεξεργαστής για την επεξεργασία των δεδομένων. Έτσι οι διαδικασίες Ι/Ο απαιτούν προσεκτικό σχεδιασμό για να επιτυγχάνεται η μέγιστη απόδοση.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 6 Γιατί χρησιμοποιούμε αρχεία; Η διαφορά σε σχέση με τις εντολές scanf και printf έγκειται στο γεγονός ότι οι εντολές scanf και printf διαχειρίζονται προσωρινά δεδομένα που βρίσκονται στη μνήμη RAM. Τα αρχεία αποθηκεύουν τα δεδομένα μόνιμα και σε τεράστιες συγκριτικά ποσότητες που είναι πρακτικά αδύνατον να πληκτρολογηθούν Όλα σχεδόν τα προγράμματα χρησιμοποιούν αρχεία (προγράμματα επεξεργασίας εγγράφων, λογιστικά φύλλα, βάσεις δεδομένων κλπ)

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 7 Τα αρχεία πρέπει να κλείνουν όταν τερματίζεται η χρήση τους. Διαφορετικά, αν αυτό δε συμβεί και το πρόγραμμα τερματιστεί απότομα (π.χ. λόγω διακοπής ηλ. ρεύματος) το αρχείο μπορεί να παραμείνει σε κατάσταση μερικής ή ολικής διαταραχής (ή και καταστροφής) και δεν θα είναι δυνατή η περαιτέρω χρήση του.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 8 Ιδιότητες αρχείων Δικαιώματα προστασίας Μάσκα δικαιωμάτων προστασίας Μέγεθος αρχείων Κατάσταση αρχείων –Χρόνος τελευταίας μεταβολής του αρχείου –Μέγεθος –Μονάδα δίσκου όπου βρίσκεται Τρόπος προσπέλασης –Αρχεία κειμένου (text files) –Δυαδικά αρχεία (binary files)

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 9 Σειριακή και τυχαία προσπέλαση

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Formatted File I/O Υπάρχουν δύο βασικά είδη διαδικασιών Ι/Ο : formatted (text) και binary Εξ ορισμού, τα αρχεία ανοίγουν σε text mode Σε formatted (text) I/O, οι αριθμοί αποθηκεύονται στο δίσκο ως ακολουθίες χαρακτήρων π.χ. ο αριθμός 6.02, δεν αποθηκεύεται σαν 4-byte type float είτε σαν 8- byte type double, αλλά σαν ακολουθία των χαρακτήρων ‘6’, ‘.’, ‘0’, και ‘2’. Η μέθοδος αυτή είναι καταλληλότερη σε πολλές περιπτώσεις αν και καταλαμβάνει περισσότερο χώρο. Οι χαρακτήρες και τα strings αποθηκεύονται κανονικά.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Αρχεία κειμένου (text files) Είναι μια ακολουθία γραμμών που περιέχει από 0 – 255 χαρακτήρες (text stream, text mode file) Μια γραμμή δεν είναι αλφαριθμητικό (string) δηλ. δεν τερματίζει με \0 Ο χαρακτήρας τερματισμού γραμμής εξαρτάται από το Λειτουργικό Σύστημα που χρησιμοποιείται (dos, windows, unix/linux ).

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Binary I/O Τα δυαδικά αρχεία (binary files) είναι παρόμοια με πίνακες δομών, με τη διαφορά ότι οι δομές βρίσκονται σε αρχεία δίσκου και όχι στην κεντρική μνήμη. Μπορούν να δημιουργηθούν αρχεία μεγάλου μεγέθους με πλήθος στοιχείων, περιοριζόμενα μόνο από τη χωρητικότητα του αποθηκευτικού μέσου. Το μόνο μειονέκτημά τους είναι ο χρόνος προσπέλασης. Τα binary files έχουν δύο βασικές διαφορές από τα text files. Μπορούμε να έχουμε άμεση πρόσβαση σε οποιοδήποτε σημείο του αρχείου χωρίς να απαιτείται αναζήτηση σε άλλα σημεία και μπορούμε να μεταβάλλουμε τα περιεχόμενα μιας δομής του αρχείου οποιαδήποτε στιγμή. Επίσης είναι ταχύτερα κατά τις διαδικασίες εγγραφής και ανάγνωσης από τα text files.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Χαρακτηριστικά των binary files Περιέχουν «ακατέργαστα» δεδομένα Δεν μπορούν να διαβαστούν απευθείας και εμφανίζουν ακατανόητα σύμβολα (garbage) στην οθόνη όταν προσπαθήσουμε να τα εκτυπώσουμε. Δεν μπορούν να εκτυπωθούν απευθείας στον εκτυπωτή. Είναι περισσότερο συμπαγή.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Contrasting binary mode and text mode

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Τα αρχεία στη γλώσσα C Στη γλώσσα C υπάρχει μόνον ένας τύπος αρχείων, όπως ισχύει στην πραγματικότητα. Σε άλλες γλώσσες υπάρχουν δύο τύποι αρχείων (σειριακά και τυχαίας προσπέλασης). Αυτό που αλλάζει στην πραγματικότητα ΔΕΝ ΕΊΝΑΙ Ο ΤΥΠΟΣ αλλά ο τρόπος προσπέλασης στο αρχείο!!!.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Accessing Files in C The files that are resident on your disk drive each have a name, and the rules for naming files will be determined by your operating system. When you write a program to process a file, it would not be particularly convenient if the program would only work with a specific file with a particular name. If it did, you would need to produce a different program for each file you might want to process. For this reason, when you process a file in C, your program references a file through a file pointer. A file pointer is an abstract pointer that is associated with a particular file when the program is run so that the program can work with different files on different occasions

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / A file pointer points to a struct that represents a stream. In the examples we will use Microsoft Windows file names. If you’re using a different operating system environment, such as UNIX, you’ll need to adjust the names of the files appropriately. If you want to use several files simultaneously in a program, you need a separate file pointer for each file, although as soon as you’ve finished using one file, you can associate the file pointer you were using with another file. So if you need to process several files, but you’ll be working with them one at a time, you can do it with one file pointer.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Ονόματα αρχείων Σύστημα αρχείων που χρησιμοποιεί ένα Λειτουργικό Σύστημα (περιγράφει τον τρόπο οργάνωσης των αρχείων) Ιεραρχικό σύστημα αρχείων (δενδρική δομή) Όνομα αρχείου : μια συμβολοσειρά (string) με τέσσερα συνθετικά (διαχωριστικό \ ή /): –Όνομα της περιφερειακής μονάδας –Όνομα καταλόγου (φακέλου) –Όνομα αρχείου –Επέκταση ονόματος

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Παραδείγματα ονομάτων αρχείων Ένα αρχείο μπορεί να έχει ένα απλό όνομα π.χ. : student.dat το αρχείο πρέπει να βρίσκεται στον κατάλογο (directory) στον οποίο εκτελείται το αντίστοιχο πρόγραμμα ή στον εξ ορισμού κατάλογο του compiler. Ένα όνομα αρχείου μπορεί να περιέχει και τον κατάλογο στον οποίον βρίσκεται (πλήρες όνομα) : c:\data\student.dat

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Σε περιβάλλον DOSή WINDOWS: c:\data\list.txt Σε πρόγραμμα C: char *filename = “c:\\data\\list.txt”; Για τη χρήση του χαρακτήρα \ πρέπει να προηγηθεί ο χαρακτήρας \

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Opening a File You associate a specific external file name with an internal file pointer variable through a process referred to as opening a file. You open a file by calling the standard library function fopen(), which returns the file pointer for a specific external file. The function fopen() is defined in, and it has this prototype: FILE *fopen(char *name, char *mode);

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Examples FILE *pfile = fopen("myfile.txt", "w"); /* Open file myfile.txt to write it */ pfile = fopen("myfile.txt", "a"); /* Open file myfile.txt to add to it */ pfile = fopen("myfile.txt", "r");

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / The first argument to the function is a pointer to a string that is the name of the external file that you want to process. You can specify the name explicitly as an argument, or you can use an array, or a variable of type pointer to char that contains the address of the character string that defines the file name. You would typically obtain the file name through some external means, such as from the command line when the program is started, or you could arrange to read it in from the keyboard. Of course, you can also define a file name as a constant at the beginning of a program when the program always works with the same file.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / The second argument to the fopen() function is a character string called the file mode that specifies what you want to do with the file.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Stream (File) Modes Καθορίζουν τον τύπο του αρχείου : Για binary files προστίθεται το `b‘ π.χ. "rb", "wb"...

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Άνοιγμα αρχείου Είναι η διαδικασία δημιουργίας σύνδεσης με ένα αρχείο σε περιφερειακή μονάδα μνήμης. Το αρχείο καθίσταται διαθέσιμο για : – ανάγνωση (read) – δεδομένα από το αρχείο είναι διαθέσιμα στο πρόγραμμα που χρησιμοποιεί το αρχείο – εγγραφή (writing) – δεδομένα από το πρόγραμμα αποθηκεύονται στο αρχείο. – ανάγνωση και εγγραφή

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Συνάρτηση fopen FILE *fopen(const char *filename, const char *mode); Η fopen() επιστρέφει ένα δείκτη (pointer) στον τύπο FILE, που είναι μια δομή (structure) που συμπεριλαμβάνεται στη stdio.h Τα μέλη της δομής χρησιμοποιούνται από το πρόγραμμα. Το όρισμα filename είναι το όνομα του αρχείου. Το όρισμα mode προσδιορίζει τον τρόπο με τον οποίο θα ανοίξει το αρχείο.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / mode r reading w writing a appending r+ reading & writing w+ reading & writing a+ reading & appending Εξ ορισμού κατάσταση είναι text mode Για binary mode προσθέτουμε το b

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / fopen Για κάθε αρχείο που ανοίγουμε πρέπει να δηλώσουμε ένα δείκτη στον τύπο FILE. Όταν χρησιμοποιούμε τη συνάρτηση fopen(), η συνάρτηση δημιουργεί ένα στιγμιότυπο (instance) της δομής FILE και επιστρέφει ένα δείκτη στη δομή. Ο δείκτης αυτός χρησιμοποιείται σε όλες τις διαδικασίες που σχετίζονται με το αρχείο. Αν η fopen() αποτύχει, επιστρέφει την τιμή NULL.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Πιθανά λάθη στη χρήση της fopen( ) Χρήση μη αποδεκτού ονόματος Η περιφερειακή μονάδα μνήμης δεν είναι διαθέσιμη Προσπάθεια για άνοιγμα του αρχείου σε λάθος κατάλογο ή μονάδα Προσπάθεια για άνοιγμα μη υπάρχοντος αρχείου σε mode r Παράδειγμα file-1.cpp

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Συναρτήσεις χειρισμού αρχείων fclosefcloseall feofferror fflushfgetc fgetcharfgets fopenfprintf fputcfputchar fputsfread fscanf

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Προκαθορισμένα Αρχεία stdin - κονσόλα (πληκτρολόγιο) / κατάσταση κειμένου stdout - κονσόλα (οθόνη) / κατάσταση κειμένου stderr - κονσόλα (οθόνη) / κατάσταση κειμένου stdprn – θύρα εκτυπωτή στο pc / δυαδική κατάσταση

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Διαδικασίες χειρισμού καταλόγων αρχείων chdir getcwd mkdir rmdir searchpath

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Writing to a file The simplest write operation is provided by the function fputc(), which writes a single character to a text file. It has the following prototype: int fputc(int c, FILE *pfile); The fputc() function writes the character specified by the first argument to the file defined by the second argument, which is a file pointer. If the write is successful, it returns the character that was written. Otherwise it returns EOF. In practice, characters aren’t written to the physical file one by one. This would be extremely inefficient. Hidden from your program and managed by the output routine, output characters are written to an area of memory called a buffer until a reasonable number have been accumulated; they are then all written to the file in one go. This mechanism is illustrated in the next page:

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Writing to a file

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Reading from a Text File The fgetc() function is complementary to fputc() and reads a character from a text file that has been opened for reading. It takes a file pointer as its only argument and returns the character read as type int if the read is successful; otherwise, it returns EOF. The typical use of fgetc() is illustrated by the following statement: mchar = fgetc(pfile); /* Reads a character into mchar */ You’re assuming here that the variable mchar has been declared to be of type int. Behind the scenes, the actual mechanism for reading a file is the inverse of writing to a file. A whole block of characters is read into a buffer in one go. The characters are then handed over to your program one at a time as you request them, until the buffer is empty, whereupon another block is read. This makes the process very fast, because most fgetc() operations won’t involve reading the disk but simply moving a character from the buffer in main memory to the place where you want to store it.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Παράδειγμα εγγραφής και ανάγνωσης σειριακού αρχείου σε ένα πρόγραμμα : file-10.cpp

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Buffered input operations

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Εντολές : fprintf( ) – fscanf( ) fprintf (FILE *fp, char *fmt, …); –fp είναι ένας δείκτης στον τύπο FILE που επιστρέφεται από την fopen( ) –fmt είναι ένας δείκτης σε string (όπως ακριβώς στην printf( ) ) –Παράδειγμα file-2.cpp fscanf(FILE *fp, char *fmt, …); –Παράδειγμα file-3.cpp

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Character Input  fgetc(FILE *fp )  fgets(char *str, int n, FILE *fp) str είναι ένας δείκτης σε μια θέση μνήμης (buffer) όπου αποθηκεύονται τα δεδομένα n είναι το πλήθος των χαρακτήρων fp είναι ο pointer στον τύπο FILE που επιστρέφεται από την fopen( ) Οι χαρακτήρες διαβάζονται από το αρχείο με δείκτη fp ξεκινώντας από τη θέση που δείχνει ο str μέχρι να βρεθεί χαρακτήρας νέας γραμμής ή διαβαστούν n-1 χαρακτήρες.

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Η συνάρτηση feof (End Of File) Παράδειγμα file-4.cpp Παράδειγμα file-5.cpp

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / fgets Λάθη  Αν βρεθεί ο χαρακτήρας EOF ή συμβεί λάθος ανάγνωσης (read error) πριν ανατεθεί στο str κανένας χαρακτήρας τότε επιστρέφεται η τιμή NULL και η θέση μνήμης για το str παραμένει αμετάβλητη.  Αν βρεθεί ο χαρακτήρας EOF ή συμβεί λάθος ανάγνωσης (read error) αφού διαβαστούν κάποιοι χαρακτήρες για το str, τότε επιστρέφεται NULL και η θέση μνήμης για το str περιέχει «σκουπίδια».

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / Character Output  putc(int ch, FILE *fp )  fputs(char *str, FILE *fp)  Παραδείγματα:  file-6.cpp,  file-7.cpp,  file-8.cpp,  file-9.cpp