Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

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


Παρουσίαση με θέμα: "ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C Αρχεία (files)"— Μεταγράφημα παρουσίασης:

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

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

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

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

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

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

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

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

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

10 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 10 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 αποθηκεύονται κανονικά.

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

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

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

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

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

16 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 16 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

17 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 17 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.

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

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

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

21 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 21 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);

22 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 22 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");

23 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 23 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.

24 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 24 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.

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

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

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

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

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

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

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

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

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

34 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 34 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:

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

36 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 36 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.

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

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

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

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

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

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

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


Κατέβασμα ppt "ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C Αρχεία (files)"

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


Διαφημίσεις Google