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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

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

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

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

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών

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

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

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1

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

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

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

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

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

Transcript:

(Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 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) fp = fopen("myfile.txt", "r");. Οντότητα Διαχείρισης Αρχείου. Τύπος Ανοίγματος (εδώ READ) Όνομα Αρχείου 14-10

A) Άνοιγμα Αρχείων H παράμετρος mode υποδεικνύει τον τρόπο με τον οποίο θέλουμε να προσπελάσουμε το αρχείο Mode r w a r+ w+ a+ Σημασία Μόνο Aνάγνωση. Αν το αρχείο δεν υπάρχει, επιστρέφεται NULL Μόνο Eγγραφή. Αν το αρχείο δεν υπάρχει δημιουργείται, αν υπάρχει τα περιεχόμενά του καταστρέφονται. Προσθήκη. Αν το αρχείο δεν υπάρχει, δημιουργείται. Ανάγνωση και εγγραφή. Αν το αρχείο δεν υπάρχει, επιστρέφεται NULL. Ανάγνωση και εγγραφή. Αν το αρχείο δεν υπάρχει δημιουργείται, αν υπάρχει τα περιεχόμενά του καταστρέφονται. Προσθήκη και ανάγνωση. Αν το αρχείο δεν υπάρχει, δημιουργείται. 14-11 C) Κλείσιμο Αρχείων Συνάρτηση fclose (stdio.h) int fclose(file *fp); Η παράμετρος fp υποδεικνύει την Οντότητα Διαχείρισης Αρχείου. main() { FILE *fp; fp = fopen("myfile.txt", "r");. 14-12

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

Β) Άνοιγμα / Ανάγνωση Ακέραιου / Κλείσιμο Αρχείων int a; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); // Διάβασε ένα αριθμό από το αρχείο fscanf(fp, %d, &a); // Close the file Mode Ανάγνωσης Ανάγνωση ενός ακεραίου από το αρχείο 14-15 Β) Άνοιγμα / Ανάγνωση Ακέραιου / Εκτύπωση / Κλείσιμο Αρχείων 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 Ανάγνωση ενός ακεραίου από αρχείο και εκτύπωση του στην οθόνη 14-16

Β) Άνοιγμα / Ανάγνωση Ακέραιου + Εκτύπωση x 2 / Κλείσιμο 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); Ανάγνωση δυο ακέραιων από αρχείο και εκτύπωση τους στην οθόνη 14-17 Πρόγραμμα Ανάγνωσης Πολλών Αριθμών Κάποιος σας δίδει ένα μεγάλο αρχείο αριθμών. Σας ζητά να βρείτε τον μέγιστο αριθμό στο αρχείο. Myfile.txt 5 6 6 4 5 5 53 34 4 4 100 54 54 543 6 14-18

Πρόγραμμα Ανάγνωσης Πολλών Αριθμών inta;intmax=-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 // Close the file 14-19 Άσκηση #include <stdlib.h> int i; int max=-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 14-20