ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δομές στην C (επανάληψη)
Advertisements

Το αλφαριθμητικό (string)
Ένα απλό πρόγραμμα σε C /* ********************************************* * This program prints out the sentence “This is a test.” * *********************************************
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
ΜΑΘ 3122 (106) Γλώσσα προγραμματισμού
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
Τύποι πραγματικών αριθμών
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Αρχές Προγραμματισμού (C). ...γράφοντας σωστά προγράμματα! (IIΙ)
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Ολυμπιάδα Πληροφορικής
Ολυμπιάδα Πληροφορικής
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Stacks - Στοίβες.
1 Ολυμπιάδα Πληροφορικής Μάθημα 5. 2 Στόχοι μαθήματος Πίνακες 2 διαστάσεων.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Είσοδος & Έξοδος στη C++ Ι
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Δυναμική Διαχείριση Μνήμης (1/2)
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Εντολές Ελέγχου Ροής.
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 Δείκτες σε συναρτήσεις Δείκτης σε συνάρτηση – Περιέχει τη διεύθυνση του κώδικα της συνάρτησης – Ό π ως ένας.
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C.
7-1 ΜΑΘΗΜΑ 7 ο Περισσότερα για Κυκλικές και Διπλά Διασυνδεόμενες Λίστες, Συναρτήσεις Βιβλιοθήκης, Διαχείριση Αρχείων.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Τύ π οι Μεταβλητών Τελεστές Βασική Είσοδος / Έξοδος.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Δείκτες (Pointers) (1/2)
Γενική Δομή Προγράμματος Λίστα από συναρτήσεις - main() Τύπος-επιστρεφόμενης-τιμής όνομα(λίστα-παραμέτρων) { δηλώσεις μεταβλητών λίστα εντολών } /*Επιστρέφει.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
TEXNΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΜΑΘ106/3122 – Γλώσσα Προγραμματισμού Ξ. Ζαμπούλης ΜΑΘ106/3122 Γλώσσα Προγραμματισμού Δομές Δεδομένων.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C Αρχεία (files)
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
Αντικειμενοστραφής Προγραμματισμός (Θ) Ενότητα 5: Είσοδος/ Έξοδος Κλειώ Σγουροπούλου Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Ανοικτά Ακαδημαϊκά Μαθήματα στο.
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενισχυτική διδασκαλία
Ενισχυτική διδασκαλία
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
Ταξινόμηση Ορισμός: Δοθέντων των στοιχείων a1,a2,… ,an η ταξινόμηση συνίσταται στην αντιμετάθεση της θέσης των στοιχείων ώστε να τοποθετηθούν με μια νέα.
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
Είσοδος/έξοδος χαμηλού επιπέδου
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Μεταγράφημα παρουσίασης:

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 2 Η Βιβλιοθήκη Εισόδου / Εξόδου Στο stdio.h – Δηλώνεται ο τύ π ος δεδομένων FILE ( με typedef) με όλες τις π ληροφορίες π ου χρειάζονται για π ροσ π έλαση του αρχείου α π ό τις αντίστοιχες συναρτήσεις – Ορίζονται 3 αρχεία stdin, stdout, stderr ( θα δούμε π οια είναι αυτά σε λίγο ) – Ορίζονται οι τιμές των σταθερών NULL EOF (End Of File) – Δηλώνονται συναρτήσεις π ροσ π έλασης αρχείων

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 3 Αρχεία Η C βλέ π ει κάθε αρχείο σαν μια σειρά α π ό bytes – Κάθε αρχείο « κλείνει » με end-of-file marker Μ π ορούμε να ανοίξουμε ένα αρχείο για διάβασμα, είτε για γράψιμο Το άνοιγμα του αρχείου συνε π άγεται την ε π ιστροφή ενός δείκτη σε FILE structure

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 4 Άνοιγμα Αρχείων FILE *fp; – Δημιουργεί έναν FILE pointer με όνομα fp FILE *fopen(const char *filename, const char *mode); – Δύο ορίσματα : filename: το όνομα του αρχείου π ου θα ανοίξει mode: Καθορίζει αν το αρχείο ανοιχτεί για διάβασμα ή γράψιμο – Η fopen ε π ιστρέφει έναν FILE pointer στο αρχείο Σε π ερί π τωση α π οτυχίας ε π ιστρέφει NULL

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 5 Table of file open modes Mode Περιγραφή r(read) Άνοιγμα μόνο για διάβασμα w(write) Άνοιγμα για γράψιμο. Αν δεν υ π άρχει το αρχείο το δημιουργεί, αν υ π άρχει καθαρίζει τα π εριεχόμενά του a(append) Άνοιγμα του αρχείου για π ροσάρτηση δεδομένων. Οι ε π όμενες εγγραφές π ροσαρτώνται στο τέλος του αρχείου.

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 6 main( ) { FILE *fp; char stuff[25]; int index; fp = fopen("TENLINES.TXT","w"); /* open for writing */ strcpy(stuff,"This is an example line."); for (index = 1;index <= 10;index++) fprintf(fp,"%s Line number %d\n",stuff,index); fclose(fp); /* close the file before ending program */ }

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 7 int main( ) { FILE *funny; int c; funny = fopen("TENLINES.TXT","r"); if (funny == NULL) { printf("File doesn’t exist\n"); return 1; } do { c = getc (funny); /* get one character from the file */ putchar (c); /* display it on the monitor */ } while (c != EOF); /* repeat until EOF (end of file) */ fclose(funny); }

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 8 void filecopy(FILE *ifp, FILE *ofp) { int c; while ((c = getc(ifp)) != EOF) putc(c, ofp); }

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 9 Παράδειγμα #include... void somefunction(char *file) { FILE *fp; char s[1000]; if ((fp = fopen(file, "r")) == NULL) { printf(“Can not open the file %s\n”,file); return; } while (fscanf(fp,”%s”,s) != EOF) { printf(“%s”,s); } fclose(fp); }

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 10 Κλείσιμο Αρχείων Ότι ανοίγει, π ρέ π ει να κλείνει – Ειδάλλως ενδέχεται να μην έχετε π ρόσβαση σε κά π οιο αρχείο για κά π οιο διάστημα fclose( FILE pointer ) – « κλείνει » το συγκεκριμένο αρχείο – Ε π ιστρέφει 0 αν είναι ε π ιτυχής και EOF διαφορετικά – Γίνεται αυτόματα με το τέλος του π ρογράμματος – Είναι καλή π ρακτική να γίνεται α π ό τον π ρογραμματιστή

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 11 Συναρτήσεις για Ανάγνωση και Εγγραφή Κειμένου fgetc – Διαβάζει έναν χαρακτήρα α π ό αρχείο – Όρισμα : FILE pointer – fgetc( stdin ) ισοδύναμο με getchar() fputc – Γράφει έναν χαρακτήρα σε αρχείο – Όρισμα : FILE pointer και ένας χαρακτήρας για να γραφεί – fputc( 'a', stdout ) ισοδύναμο με putchar( 'a' ) fgets – Διαβάζει μια γραμμή α π ό ένα αρχείο – char *fgets(char *line, int maxline, FILE *fp) fputs – Γράφει μια γραμμή σε ένα αρχείο – int fputs(char *line, FILE *fp) fscanf / fprintf – Ισοδύναμες των scanf και printf για αρχεία

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 12 Τρία Ειδικής Χρήσης Αρχεία Το λειτουργικό σύστημα, με το π ου αρχίζει να τρέχει το π ρόγραμμά, ανοίγει τρία αρχεία και ορίζει τους δείκτες stdin, stdout, stderr να δείχνουν στις αντίστοιχες δομές FILE. Κανονικά : – stdin: αντιστοιχεί στο π ληκτρολόγιο ! Ότι κουμ π ί π ατιέται θεωρείται ότι διαβάζεται α π ό ένα αρχείο – stdout: αντιστοιχεί στην οθόνη μας. Ότι εγγράφετε σε αυτό το αρχείο εκτυ π ώνεται στην οθόνη – stderr: αντιστοιχεί ε π ίσης στην οθόνη μας. Χρησιμο π οιείτε για μηνύματα λάθους. Αναδιεύθυνση του Unix – Μ π ορούμε να δηλώσουμε στο λειτουργικό να συνδέσει τα π αρα π άνω « αρχεία » με π ραγματικά ( αντί για το π ληκτρολόγιο και την οθόνη ) – myprogram < someinputfile Το stdin δεν είναι π λέον το π ληκτρολόγιο, αλλά το αρχείο somefile – myprogram > someoutputfile Το stdout δεν είναι π λέον η οθόνη αλλά το someoutputfile

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 13 Παράδειγμα #include int main() { int i; FILE *fp; if ((fp = fopen("myfirstfile.txt", "w")) == NULL) { printf("Could not open file.\n"); return 0; } fprintf(fp, "Lets write something here.\n"); for (i = 0; i < 10; ++i) fprintf(fp, “%5d, %5d, %5d\n“,i,i*i,i*i*i); fclose(fp); // Check out the contents of the file myfirstfile.txt } Lets write something here. 0, 0, 0 1, 1, 1 2, 4, 8 3, 9, 27 4, 16, 64 5, 25, 125 6, 36, 216 7, 49, 343 8, 64, 512 9, 81, 729

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 2 3#include 4 5int main() 6{6{ 7 int account = 1; 8 char name[ 30 ]; 9 double balance; 10 FILE *cfPtr; /* cfPtr = clients.dat file pointer */ if ( ( cfPtr = fopen( "clients.dat", "w" ) ) == NULL ) 13 printf( "File could not be opened\n" ); 14 else { 15 printf( "Enter the account, name, and balance.\n" ); 16 printf( "Enter EOF to end input.\n" ); 17 printf( "? " ); 18 scanf( "%d%s%lf", &account, name, &balance ); while (account > 0) { 21 fprintf( cfPtr, "%d %s %.2f\n", 22 account, name, balance ); 23 printf( "? " ); 24 scanf( "%d%s%lf", &account, name, &balance ); 25 } fclose( cfPtr ); 28 } return 0; 31} Enter the account, name, and balance. Enter EOF to end input. ? 100 Jones ? 200 Doe ? 300 White 0.00 ? 400 Stone ? 500 Rich ?

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Δυαδικά αρχεία

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 16 Τρέχουσα Θέση Μία α π ό τις π ληροφορίες π ου διατηρούνται στις δομές τύ π ου FILE για κάθε αρχείο είναι η τρέχουσα θέση εγγραφής / ανάγνωσης Όταν κάνουμε εγγραφή κειμένου σε ένα αρχείο με τις συναρτήσεις fputc, fputs, fprintf η εγγραφή γίνεται στην τρέχουσα θέση μέσα στο αρχείο. Όταν κάνουμε ανάγνωση κειμένου με τις συναρτήσεις fgetc, fgets, fscanf η ανάγνωση γίνεται α π ό την τρέχουσα θέση στο αρχείο. Η τρέχουσα θέση αυξάνει ανάλογα με τους χαρακτήρες π ου έχουμε γράψει ή διαβάσει Η τρέχουσα θέση όταν π ρωτοανοίξουμε ένα αρχείο εξαρτάται α π ό το mode στην fopen Μ π ορούμε να αλλάξουμε την τρέχουσα θέση με την συνάρτηση fseek ( αναλυτικά μετά )

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 17 Δυαδικά αρχεία fwrite – « γράφει » δεδομένα α π ό μια π εριοχή μνήμης σε ένα αρχείο Παράδειγμα : fwrite( &number, sizeof( int ), 1, myPtr ); – &number – π εριοχή μνήμης ( δείκτης ) – sizeof( int ) – μέγεθος αντικειμένων – 1 – αριθμός αντικειμένων (1 για α π λές μεταβλητές ) – myPtr – αρχείο για μεταφορά fread – « διαβάζει » δεδομένα α π ό ένα αρχείο σε μια π εριοχή μνήμης fread( &client, sizeof (int), 1, myPtr ); – Μ π ορεί να « διαβάσει » ολόκληρο τον π ίνακα

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 2 3#include 4 5struct clientData { 6 int acctNum; 7 char lastName[ 15 ]; 8 char firstName[ 10 ]; 9 double balance; 10}; 11 12int main() 13{ 14 int i; 15 struct clientData blankClient = { 0, "", "", 0.0 }; 16 FILE *cfPtr; if ( ( cfPtr = fopen( "credit.dat", "w" ) ) == NULL ) 19 printf( "File could not be opened.\n" ); 20 else { for ( i = 1; i <= 100; i++ ) 23 fwrite( &blankClient, 24 sizeof( struct clientData ), 1, cfPtr ); fclose( cfPtr ); 27 } return 0; 30}

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 19 Μετακίνηση του δείκτη αρχείου fseek – Πάει το δείκτη σε μια συγκεκριμένη θέση – fseek( pointer, offset, symbolic_constant ); pointer – file pointer offset – θέση file pointer (0 η αρχή του αρχείου ) symbolic_constant – καθορίζει α π ό π ού αρχίζουμε να μετράμε – SEEK_SET – αρχή αρχείου – SEEK_CUR – τρέχουσα θέση – SEEK_END – τέλος αρχείου

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 // Εγγραφή στο αρχείο «credit.dat» στοιχειών ταξινομημένα με βάση το acctNum 2 3#include 4 5struct clientData { 6 int acctNum; 7 char lastName[ 15 ]; 8 char firstName[ 10 ]; 9 double balance; 10}; 11 12int main() 13{ 14 FILE *cfPtr; 15 struct clientData client = { 0, "", "", 0.0 }; if ( ( cfPtr = fopen( "credit.dat", "r+" ) ) == NULL ) 18 printf( "File could not be opened.\n" ); 19 else { 20 printf( "Enter account number 21 ( 1 to 100, 0 to end input )\n? " ); 22 scanf( "%d", &client.acctNum ); while ( client.acctNum != 0 ) { 25 printf( "Enter lastname, firstname, balance\n? " ); 26 fscanf( stdin, "%s%s%lf", client.lastName, 27 client.firstName, &client.balance ); 28 fseek( cfPtr, ( client.acctNum - 1 ) * 29 sizeof( struct clientData ), SEEK_SET ); 30 fwrite( &client, sizeof( struct clientData ), 1, 31 cfPtr ); 32 printf( "Enter account number\n? " ); 33 scanf( "%d", &client.acctNum ); 34 } fclose( cfPtr ); 37 return 0; } 40}

ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης Enter account number ? 88 Enter lastname, firstname, balance ? Smith Dave Enter account number ? 33 Enter lastname, firstname, balance ? Dunn Stacey Enter account number ? 0 Enter account number (1 to 100, 0 to end input) ? 37 Enter lastname, firstname, balance ? Barker Doug 0.00 Enter account number ? 29 Enter lastname, firstname, balance ? Brown Nancy Enter account number ? 96 Enter lastname, firstname, balance ? Stone Sam 34.98