(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Σχετικά έγγραφα
Μεθόδων Επίλυσης Προβλημάτων

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Εργαστήριο 9: Αρχεία

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Επεξεργασία Αρχείων Κειµένου

Διάλεξη 18η: Διαχείρηση Αρχείων

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ιαφάνειες παρουσίασης #6 (β)

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C

Εισαγωγή στον Προγραμματισμό

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Διαδικασιακός Προγραμματισμός

Προγραμματισμός ΙI (E)

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

FILE *fopen(const char *fname, const char *mode) void fclose(file *f) void fflush(file *f)

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

S, (5, -3, 34, -23, 7) ( *, _

i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y)

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Επανάληψη για τις Τελικές εξετάσεις

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Διάλεξη 4: Οργάνωση Προγράμματος & Ανατομία Προγράμματος

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Ανάπτυξη και Σχεδίαση Λογισμικού

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Ενδεικτική περιγραφή μαθήματος

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Δομημένος Προγραμματισμός (ΤΛ1006)

Μεθόδων Επίλυσης Προβλημάτων

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Διαδικαστικός Προγραμματισμός

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

scanf() scanf() stdin scanf() printf() int float double %lf float

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

Η γλώσσα προγραμματισμού C

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Η γλώσσα προγραμματισμού C Χειρισμός αρχείων

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp)

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 1. Εισαγωγή. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Προγραμματισμό για ΗΜΥ

C: Από τη Θεωρία στην Εφαρμογή

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

Περιεχόμενα. Πρόλογος... 21

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός Ι (ΗΥ120)

Η βασική συνάρτηση προγράμματος main()

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός Ι (ΗΥ120)

Ηβασικήσυνάρτηση προγράμματος main()

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Διαδικασιακός Προγραμματισμός

Κεφάλαιο 8ο: Αρχεία. 8.1 Τι είναι αρχείο;

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Αρχεία εδοµένων. Προγραµµατισµός Ι 1

Προγραμματισμός Η/Υ (ΤΛ2007 )

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Προγραμματιστικές τεχνικές

Προγραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections)

Κεφάλαιο 8.6. Πίνακες ΙI ( ιάλεξη 16) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Η γλώσσα προγραμματισμού C

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός H/Y Ενότητα 7: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Προγραµµατισµός Ι (ΗΥ120)

Οι δείκτες στη γλώσσα C

Χpήσιµες Βιβλιοθήκες της γλώσσας C

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Προγραμματισμός Ι (ΗΥ120)

Transcript:

(Κεφάλαιο 2.7 και 12) Αρχεία στην C ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 14-1

Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουµε δεδοµένα από ένα πρόγραµµα, πρέπει να χρησιµοποιήσουµε την ευτερεύουσα Μνήµη 14-2

Επανάληψη στην Αποθήκευση (Storage) Ηπιο συνηθισµένη µορφή δευτερεύουσας µνήµη η οποία αξιοποιείτε από ένα πρόγραµµα είναι ο Μαγνητικός ίσκος. Μαγνητικός ίσκος: Αποτελείτε από ένα ή περισσότερους δίσκους µε µαγνητική επικάλυψη Τα δεδοµένα αποθηκεύονται σε τοµείς (sectors). Οι δίσκοι διαθέτουν την δυνατότητα σειριακής αλλά και άµεσης πρόσβασης στα δεδοµένα. 14-3

Επανάληψη στα Λειτουργικά Συστήµατα (Operating Systems) Ποιος ιαχειρίζεται τους Πόρους (Μνήµη, ίσκο, Επεξεργαστή, κτλ) σε ένα Υπολογιστικό Σύστηµα? ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (Operating System) 14-4

Λειτουργικά Συστήµατα και Συστήµατα ιαχείρισης Αρχείων Κάθε γλώσσα προγραµµατισµού έχει κάποια βιβλιοθήκη η οποία προσφέρει λειτουργίες πρόσβασης σε αρχεία αποθηκευµένα σε µονάδες ευτερεύουσας Μνήµης. Στην C, oι λειτουργίες αυτές προσφέρονται από την βιβλιοθήκη <stdio.h>. Η Βιβλιοθήκη επικοινωνεί µε το υποσύστηµα διαχείρισης αρχείων (File System) του λειτουργικού συστήµατος το οποίο στην συνέχεια διεκπεραιώνει τις λειτουργίες που ζητά ο προγραµµατιστής. (το filesystem στα Windows είναι το FAT32, NTFS) Ας δούµε τι περιέχουν εσωτερικά τα αρχεία (δηλαδή πως αποθηκεύουν τις πληροφορίες) 14-5

Αρχεία Κειµένου Θυµηθείτε ότι το αρχείο είναι µία ακολουθία bytes. π.χ. 01100011 01100001 01110010 ascii:99 ascii:97 ascii:114 c a r Οι χαρακτήρες αυτοί είναι αποθηκευµένοι σειριακά στο αρχείο και διαχωρίζονται µε διάφορους ειδικούς χαρακτήρες Αρχείο όπως το βλέπει ο χρήστης Car Test hello Αρχείο στην Πραγµατικότητα Car\nTest\thelloEOF Τέλος αρχείου ascii: -1 14-6

Αρχεία Κειµένου ΟΠίνακας ASCII Αρκετοί χαρακτήρες είναι κρυµµένοι δηλαδή δεν φαίνονται στην οθόνη και στα αρχεία 14-7

υαδικά Αρχεία Καλά, όλα τα αρχεία περιέχουν Χαρακτήρες ASCII? OXI Ας δούµε πως είναι κωδικοποιηµένο ένα αρχείο εικόνας GIF (Graphics Interchange Format), συγκεκριµένα την γνωστή εικόνα του folder στα Windows Αρχή Το σχήµα δείχνει ότι οι εικόνες (όπως και ΌΛΑ τα αρχεία) είναι ουσιαστικά µια σειρά από bytes (στο σχήµα κωδικοποιηµένα στο δεκαεξαδικό σύστηµα για να κερδίσουµε χώρο) 47 16 =1000111 2 14-8

Εισαγωγή στα Αρχεία Τώρα θα επικεντρωθούµε στις λειτουργίες εγγραφής και ανάγνωσης σε αρχεία της βιβλιοθήκης <stdio.h>. Η επεξεργασία αρχείων γίνεται κατά τον ακόλουθο τρόπο: Α) Συσχετίζουµε µία οντότητα της C µε το αρχείο (άνοιγµα του αρχείου) Β) Πραγµατοποιούµε τις λειτουργίες ανάγνωσης και εγγραφής δεδοµένων C) Κλείνουµε το αρχείο 14-9

A) Άνοιγµα Αρχείων Συνάρτηση fopen (stdio.h) FILE *fopen(char *filename, char *mode); Η παράµετρος filename υποδεικνύει το όνοµα του αρχείου που επιθυµούµε να ανοίξουµε Το Mode υποδεικνύει το είδος της πράξης (π.χ. Read, write, read-write, etc) main() { FILE *fp; fp = fopen("myfile.txt", "r");. Οντότητα ιαχείρισης Αρχείου. Τύπος Ανοίγµατος (εδώ READ) Όνοµα Αρχείου 14-10

A) Άνοιγµα Αρχείων H παράµετρος mode υποδεικνύει τον τρόπο µε τον οποίο θέλουµε να προσπελάσουµε το αρχείο Mode r w a Σηµασία Μόνο Aνάγνωση. Αν το αρχείο δεν υπάρχει, επιστρέφεται NULL Μόνο Eγγραφή. Αν το αρχείο δεν υπάρχει δηµιουργείται, αν υπάρχει τα περιεχόµενά του καταστρέφονται. Προσθήκη. Αν το αρχείο δεν υπάρχει, δηµιουργείται. r+ Ανάγνωση και εγγραφή. Αν το αρχείο δεν υπάρχει, επιστρέφεται NULL. w+ Ανάγνωση και εγγραφή. Αν το αρχείο δεν υπάρχει δηµιουργείται, αν υπάρχει τα περιεχόµενά του καταστρέφονται. a+ Προσθήκη και ανάγνωση. Αν το αρχείο δεν υπάρχει, δηµιουργείται. 14-11

C) Κλείσιµο Αρχείων Συνάρτηση fclose (stdio.h) int fclose(file *fp); Η παράµετρος fp υποδεικνύει την Οντότητα ιαχείρισης Αρχείου. main() { FILE *fp; fp = fopen("myfile.txt", "r"); fclose(fp);. 14-12

Β) Άνοιγµα/ Εγγραφή/ Κλείσιµο Αρχείων Γράψετε ένα απλό πρόγραµµα που προσθέτει την λέξη Hello σε ένα αρχείο. #include <stdio.h> Append mode int main() { FILE *fp; fp = fopen("myfile.txt", "a"); // άνοιγµα αρχείου fprintf(fp, "Hello"); // εκτύπωση σε αρχείο fclose(fp); // κλείσιµο αρχείου return 0; Ας δούµε τώρα τις εντολές fprintf, fclose σε περισσότερο βάθος 14-13

Β) Άνοιγµα/ Εγγραφή/ Κλείσιµο Αρχείων #include <stdio.h> main() { FILE *fp; // Try to open the file if ((fp = fopen("myfile.txt", a")) == NULL) { printf("error opening file\n"); exit(1); // Write to the file Hello 5 6 fprintf(fp, "Hello%d %d, 5,6); fclose(fp); To ίδιο πρόγραµµα µε συνθήκη έλεγχου που ελέγχει αν άνοιξε το αρχείο Π.χ. Αν γέµισε ο δίσκος τότε το fopen θα αποτύχει, και ο χρήστης του προγράµµατος µπορεί να ειδοποιηθεί µε µήνυµα λάθους 14-14

Β) Άνοιγµα / Ανάγνωση Ακέραιου / Κλείσιµο Αρχείων #include <stdio.h> main() { FILE *fp; int a; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); // ιάβασε ένα αριθµό από το αρχείο fscanf(fp, %d, &a); // Close the file fclose(fp); Mode Ανάγνωσης Ανάγνωση από αρχείο ενός ακεραίου 14-15

Β) Άνοιγµα / Ανάγνωση Ακέραιου / Εκτύπωση / Κλείσιµο Αρχείων #include <stdio.h> main() { FILE *fp; int a; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); // ιάβασε ένα αριθµό από το αρχείο fscanf(fp, %d, &a); // Εκτύπωσε τον αριθµό printf( %d, &a); // Close the file fclose(fp); Ανάγνωση από αρχείο ενός ακεραίου και εκτύπωση στην οθόνη 14-16

Β) Άνοιγµα / Ανάγνωση Ακέραιου + Εκτύπωση x 2 / Κλείσιµο #include <stdio.h> main() { FILE *fp; int a; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); fscanf(fp, %d, &a); printf( %d, &a); fscanf(fp, %d, &a); printf( %d, &a); Ανάγνωση από αρχείο δυο ακέραιων και εκτύπωση στην οθόνη fclose(fp); 14-17

Πρόγραµµα Ανάγνωσης Πολλών Αριθµών Κάποιος σας δίδει ένα µεγάλο αρχείο αριθµών. Σας ζητά να βρείτε τον µέγιστο αριθµό στο αρχείο. Myfile.txt 5 6 6 4 5 5 53 34 4 4 100 54 54 543 6 14-18

Πρόγραµµα Ανάγνωσης Πολλών Αριθµών #include <stdio.h> main() { FILE *fp; int a; int max=-1; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); while (fscanf(fp, "%d", &a)!= EOF) { //printf("%d\n", a); if (a>max) { max = a; printf( max:%d, max); // Print the MAX fclose(fp); // Close the file 14-19

Άσκηση #include <stdio.h> #include <stdlib.h> main() { FILE *fp; inti; intmax=-1; srand(time(null)); Τι ακριβώς κάνει το πιο κάτω πρόγραµµα? if ((fp = fopen("myfile.txt", "w")) == NULL) { printf("error opening file\n"); exit(1); for (i=0;i<10;i++) { fprintf(fp, "%d\n", rand() % 1000); // Close the file fclose(fp); 14-20