Πξνγξακκαηηζκόο Ι. Δίζνδνο/Έμνδνο. Κσλζηαληίλνο Σζεξπέο. (βαζηζκέλν ζηηο δηαθάλεηεο ηνπ θ. Γεκήηξε Μηραήι)

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

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

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

Constructors and Destructors in C++

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Προγραµµατισµός. Αρχεία

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

Πξνγξακκαηηζκόο Θ. Δπλακηθή Δηαρείξηζε Μλήκεο. Κσλζηαληίλνο Τζεξπέο. (βαζηζκέλν ζηηο δηαθάλεηεο ηνπ θ. Δεκήηξε Μηραήι)

Οργάνωση και Δομή Παρουσιάσεων

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

Intel Accelerate Your Code

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

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

Άσκηση 1 - Μοπυοποίηση Κειμένου

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

242 - Ειζαγωγή ζηοσς Η/Υ

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

ΑΡΥΔ ΟΙΚΟΝΟΜΙΚΗ ΘΔΩΡΙΑ ΛΤΔΙ ΓΙΑΓΩΝΙΜΑΣΟ ΚΔΦΑΛΑΙΟΤ 2

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

ΠΛΗ36. Άσκηση 1. Άσκηση 2. Οη δηεπζύλζεηο ησλ 4 σλ ππνδηθηύσλ είλαη νη αθόινπζεο. Υπνδίθηπν Α: /27 Υπνδίθηπν Β:

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Ηλεκηπονικά Απσεία και Διεπαθέρ

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

Η αξρή ζύλδεζεο Client-Server

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

Σρήκα Α. Γξάθνπκε ηα ζηνηρεία ηνπ Πξνκεζεπηή θαη παηάκε Δηζαγσγή. Σρήκα Β1

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

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

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots)

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

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Κινητός και Διάχυτος Υπολογισμός (Mobile & Pervasive Computing)

4) Να γξάςεηε δηαδηθαζία (πξόγξακκα) ζηε Logo κε όλνκα θύθινο πνπ ζα ζρεδηάδεη έλα θύθιν. Λύζε Γηα θύθινο ζηθ επαλάιαβε 360 [κπ 1 δε 1] ηέινο

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)

Δηζαγωγή ζηε γιώζζα C Παξνπζίαζε 3 ε : Δίζνδνο/ Έμνδνο - Σπλαξηήζεηο - Pointers

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ: έζησ

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

x x x x tan(2 x) x 2 2x x 1

Δξγαιεία Καηαζθεπέο 1 Σάμε Δ Δ.Κ.Φ.Δ. ΥΑΝΗΩΝ ΠΡΩΣΟΒΑΘΜΗΑ ΔΚΠΑΗΓΔΤΖ. ΔΝΟΣΖΣΑ 2 ε : ΤΛΗΚΑ ΩΜΑΣΑ ΔΡΓΑΛΔΗΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Ογθνκεηξηθό δνρείν

ΔΠΙΣΡΟΠΗ ΓΙΑΓΩΝΙΜΩΝ 74 ος ΠΑΝΔΛΛΗΝΙΟ ΜΑΘΗΣΙΚΟ ΓΙΑΓΩΝΙΜΟ ΣΑ ΜΑΘΗΜΑΣΙΚΑ Ο ΘΑΛΗ 19 Οκηωβρίοσ Δνδεικηικές λύζεις

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Μηα ζπλάξηεζε κε πεδίν νξηζκνύ ην Α, ζα ιέκε όηη παξνπζηάδεη ηοπικό μέγιζηο ζην, αλ ππάξρεη δ>0, ηέηνην ώζηε:

Εηζαγσγή ζηελ επηζηήκε ησλ ππνινγηζηώλ. Λνγηζκηθό Υπνινγηζηώλ Κεθάιαην 7ν Λεηηνπξγηθά Σπζηήκαηα

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

Κάλνληαο θιηθ κε ην πνληίθη ζηνλ ινγαξηαζκό πνπ ζέινπκε θιείλεη ην παξάζπξν πνπ κόιηο είρε αλνίμεη. Παηώληαο Παξνπζίαζε (βειάθη Νν 3) παξνπζηάδνληαη

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΣΔΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΔΧΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΔΠΙΚΟΙΝΩΝΙΩΝ ΧΔΙΜΔΡΙΝΟ ΔΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

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

ΣΔΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΔΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΔΠΙΚΟΙΝΩΝΙΩΝ ΥΔΙΜΔΡΙΝΟ ΔΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

ΘΔΜΑ 1 ο Μονάδες 5,10,10

Άζθεζε 2ε ΤΣΗΜΑΣΑ ΔΛΔΓΥΟΤ ΑΝΟΙΚΣΟΤ ΒΡΟΥΟΤ ΚΑΙ MATLAB

Αντισταθμιστική ανάλυση

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

Transcript:

Πξνγξακκαηηζκόο Ι Δίζνδνο/Έμνδνο Κσλζηαληίλνο Σζεξπέο (βαζηζκέλν ζηηο δηαθάλεηεο ηνπ θ. Γεκήηξε Μηραήι) Σκήκα Πιεξνθνξηθήο θαη Σειεκαηηθήο Χαξνθόπεην Παλεπηζηήκην

Δίζνδνο/Έμνδνο Μέρξη ηώξα όπνηε ζέιακε λα δηαβάζνπκε ρξεζηκνπνηνύζακε πάληα ην πιεθηξνιόγην θαη γξάθακε πάληα ζηελ νζόλε. Η είζνδνο θαη ε έμνδνο δελ είλαη κέξνο ηεο γιώζζαο C αιιά κέξνο ηεο βηβιηνζήθεο ηεο. Δπεηδή ηα πξνγξάκκαηα ζρεηίδνληαη κε ην πεξηβάιινλ ηνπο κε πνιύ πην πνιύπινθνπο ηξόπνπο από όηη έρνπκε δεη σο ηώξα, ζα κειεηήζνπκε ιίγν ηελ βηβιηνζήθε εηζόδνπ/εμόδνπ. Χαξνθόπεην Παλεπηζηήκην 2/41

Βηβιηνζήθε Σν αξρείν πνπ πεξηέρεη ηνπο νξηζκνύο ησλ ηύπσλ θαη ησλ ζπλαξηήζεσλ πνπ είλαη απαξαίηεηεο γηα ηελ ζπλαλαζηξνθή κε ην ζύζηεκα εηζόδνπ/εμόδνπ ηεο C είλαη ην stdio.h. Σν όλνκα ηνπ αξρείνπ ζεκαίλεη Standard Input Output. Μέζσ ηνπ αξρείνπ stdio.h έλα πξόγξακκα κπνξεί λα έρεη επαθή κε ηελ ηππηθή είζνδν (ζπλήζσο πιεθηξνιόγην) θαη ηελ ηππηθή έμνδν (ζπλήζσο νζόλε). Οη ηππηθέο είζνδνη/έμνδνη παξέρνληαη ζηελ C κέζσ ηνπ εθάζηνηε ιεηηνπξγηθνύ ζπζηήκαηνο. Χαξνθόπεην Παλεπηζηήκην 3/41

Ιεξαξρία Γεδνκέλσλ 1 2 3 4 5 bit - ε κηθξόηεξε πνζόηεηα 0 ή 1 byte - 8 bits απνζήθεπζε ελόο ραξαθηήξα (αξηζκνί, γξάκκαηα, ζύκβνια,...) word - 4 bytes (ή 8 bytes) απνζήθεπζε αξηζκνύ (int, long, float,...) Αξρείν - ζπιινγή πνιιώλ bytes Βάζε δεδνκέλσλ - ζπιινγή αξρείσλ (θαη όρη κόλν) Χαξνθόπεην Παλεπηζηήκην 4/41

Αξρεία Θα ζέιακε κέζα από ηελ C λα έρνπκε πξόζβαζε ζε αξρεία, ηα νπνία δελ είλαη ήδε ζπλδεδεκέλα κε ην πξόγξακκα καο (όπσο ε ηππηθή είζνδνο θαη έμνδνο). Γηα απηό ηνλ ιόγν ε βηβιηνζήθε ηεο C καο παξέρεη ηελ ζπλάξηεζε fopen() ε νπνία αλαιακβάλεη ηελ επηθνηλσλία κε ην ιεηηνπξγηθό ζύζηεκα. Σν ιεηηνπξγηθό ζύζηεκα είλαη ππεύζπλν γηα ηελ νξγάλσζε ησλ αξρείσλ. Χαξνθόπεην Παλεπηζηήκην 5/41

Αξρεία Η ζπλάξηεζε fopen() είλαη ηεο κνξθήο FILE * fopen ( char * name, char * mode ) ; Πέξλεη δύν παξακέηξνπο 1 κηα ζπκβνινζεηξά κε ην όλνκα ηνπ αξρείνπ 2 κηα ζπκβνινζεηξά κε δηάθνξεο επηινγέο γηα ηνλ ηξόπν πξόζβαζεο ζην αξρείν θαη επηζηξέθεη έλα δείθηε ελόο ηύπνπ FILE. Χαξνθόπεην Παλεπηζηήκην 6/41

FILE Ο ηύπνο FILE νξίδεηαη κέζα ζηελ βηβιηνζήθε ηεο C κέζσ ελόο typedef. Οη ιεπηνκέξεηεο πινπνίεζεο δελ καο απαζρνινύλ. Αξθεί λα πνύκε πσο έλαο δείθηεο ηύπνπ FILE δείρλεη θάπνπ όπνπ ην ιεηηνπξγηθό ζύζηεκα θξαηάεη πιεξνθνξίεο γηα ην αξρείν πνπ καο ελδηαθέξεη. Χαξνθόπεην Παλεπηζηήκην 7/41

Άλνηγκα Αξρείσλ θαη Ρνέο Μία θιήζε ζηελ fopen() έρεη ηελ εμήο κνξθή FILE * fp ; fp = fopen ( name, mode ) ; όπνπ name είλαη ην όλνκα ηνπ αξρείνπ πνπ ζέινπκε λα επεμεξγαζηνύκε θαη mode είλαη κηα ζπκβνινζεηξά πνπ δειώλεη ηελ ρξήζε ηνπ αξρείνπ. Με ηελ ζπλάξηεζε fopen() ιέκε πσο ανοίγοσμε έλα αξρείν. Γηα λα ρξεζηκνπνηήζνπκε έλα αξρείν ζηελ C πξέπεη πξώηα λα ην αλνίμνπκε, δειαδή λα δεκηνπξγήζνπκε κηα ζύλδεζε κεηαμύ ηνπ πξαγκαηηθνύ αξρείνπ θαη ηεο γιώζζαο C. Σελ ζύλδεζε απηή, πνπ απνθαινύκε ροή ηελ θξνληίδεη ην ιεηηνπξγηθό. Χαξνθόπεην Παλεπηζηήκην 8/41

Σππηθέο Ρνέο Όηαλ μεθηλήζεη ε εθηέιεζε ελόο πξνγξάκκαηνο αλνίγνληαη απηόκαηα 3 ξνέο: 1 2 3 ε ηππηθή είζνδνο (ζπλήζσο από ην πιεθηξνιόγην) κε δείθηε stdin ε ηππηθή έμνδνο (ζπλήζσο ε νζόλε) κε δείθηε stdout ην ηππηθό ζθάικα (ζπλήζσο ε νζόλε) κε δείθηε stderr Πξνζέμηε πσο ζηα πεξηζζόηεξα ιεηηνπξγηθά ζπζηήκαηα κπνξνύκε λα αλαθαηεπζύλνπκε ηηο ηππηθέο ξνέο. Χαξνθόπεην Παλεπηζηήκην 9/41

Αξρεία θαη getchar() Η ηππηθή βηβιηνζήθε ηεο C παξέρεη πνιιέο ζπλαξηήζεηο γηα αλάγλσζε δεδνκέλσλ από αξρεία θαη εγγξαθή δεδνκέλσλ ζε αξρεία. Γηα παξάδεηγκα ε ζπλάξηεζε int fgetc ( FILE * stream ) ; δηαβάδεη έλα ραξαθηήξα από έλα αξρείν, όπσο ε getchar() δηαβάδεη από ηελ ηππηθή είζνδν. Με άιια ιόγηα ε θιήζε fgetc( stdin ) είλαη νπζηαζηηθά ηζνδύλακε κε ηελ θιήζε ηεο getchar(). Χαξνθόπεην Παλεπηζηήκην 10/41

Αξρεία θαη putchar() Γηα λα γξάςνπκε έλα ραξαθηήξα ζε έλα αξρείν ε ηππηθή βηβιηνζήθε ηεο C καο παξέρεη ηελ ζπλάξηεζε int fputc ( int c, FILE * stream ) ; ε νπνία γξάθεη ηνλ ραξαθηήξα c ζην αξρείν πνπ ζπλδέεηαη κέζσ ηεο ξνήο stream. Δίλαη δειαδή ε αληίζηνηρε ηεο ζπλάξηεζεο putchar( int c ) ε νπνία καο επηηξέπεη λα γξάθνπκε ζηελ ηππηθή έμνδν. Με άιια ιόγηα ε θιήζε fputc( 'a', stdout ) είλαη νπζηαζηηθά ηζνδύλακε κε ηελ θιήζε ηεο putchar( 'a'). Χαξνθόπεην Παλεπηζηήκην 11/41

εηξηαθή ή Σπραία Πξνζπέιαζε ηελ C κπνξνύκε λα πξνζπειάζνπκε έλα αξρείν κε 2 ηξόπνπο 1 2 ζεηξηαθή πξνζπέιαζε δηαβάδνπκε ή γξάθνπκε ζεηξηαθά από ηελ αξρή ηνπ αξρείνπ ηα αξρεία απηά είλαη αρτεία κειμένοσ ηπραία πξνζπέιαζε δηαβάδνπκε ή γξάθνπκε ζε ηπραία ζεκεία ηνπ αξρείνπ ηα αξρεία απηά είλαη δσαδικά αρτεία Χαξνθόπεην Παλεπηζηήκην 12/41

Γεκηνπξγία Αξρείνπ εηξηαθήο Πξόζβαζεο Η C δελ επηβάιιεη θάπνηα δνκή ζε έλα αξρείν. Δίλαη θαζήθνλ ηνπ πξνγξακκαηηζηή λα δνκήζεη έλα αξρείν ώζηε λα ηθαλνπνηήζεη ηηο απαηηήζεηο κηαο εθαξκνγήο. Γηα λα δεκηνπξγήζνπκε έλα αξρείν γηα γξάςηκν θαινύκε ηελ ζπλάξηεζε fopen() κε ηνλ παξαθάησ ηξόπν FILE * fd = fopen ( "filename", "w" ); Σν "w" ζεκαίλεη άλνηγκα ηνπ αξρείνπ γηα γξάςηκν. ε πεξίπησζε πνπ ην αξρείν ππάξρεη ήδε, ηα ήδε ππάξρνληα δεδνκέλα ζβήλνληαη. Χαξνθόπεην Παλεπηζηήκην 13/41

Γεκηνπξγία Αξρείνπ εηξηαθήο Πξόζβαζεο Παξάδεηγκα 1 #include <stdio.h> 2 3 main ( ) 4 { 5 int AM ; 6 char name [30] ; 7 8 FILE * fd ; 9 if ( ( fd=fopen ( "students.dat", "w" ) ) == NULL ) 10 printf ( "File could not be opened\n" ) ; 11 else { 12 printf ( "Enter AM and name,\n" ) ; 13 printf ( "Enter EOF to end input.\n" ) ; 14 printf ( "? " ) ; 15 scanf ( "%d%s", &AM, name ); 16 while (! feof ( stdin ) ) ) { 17 fprintf ( fd, "%d %s\n", AM, name ) ; 18 printf ( "? " ) ; 19 scanf ( "%d%s", &AM, name ); 20 } 21 fclose ( fd ); 22 } 23 } Χαξνθόπεην Παλεπηζηήκην 14/41

Σηκή Δπηζηξνθήο ηεο fopen() Όηαλ αλνίγνπκε έλα αξρείν πξέπεη πάληα λα θάλνπκε έιεγρν ηεο ηηκήο πνπ καο επηζηξάθεθε. Δαλ γηα θάπνην ιόγν ην αξρείν δελ αλνίρηεθε (π.ρ δελ επηηξέπεηαη ε πξόζβαζε ζηνλ θάθειν πνπ ζέινπκε, δελ ππάξρεη ρώξνο ζηνλ δίζθν, θ.η.ι.) ε ζπλάξηεζε fopen() επηζηξέθεη NULL. FILE * fd ; if ( ( fd=fopen ( "students.dat", "w" ) ) == NULL ) printf ( "File could not be opened\n" ) ; Χαξνθόπεην Παλεπηζηήκην 15/41

Έιεγρνο Σέινο Αξρείνπ End-Of-File (EOF) Πνιιέο θνξέο ζέινπκε λα δνύκε εαλ έλα αξρείν έθηαζε ζην ηέινο ηνπ. Γηα ηνλ ζθνπό απηό ε C καο παξέρεη ηελ ζπλάξηεζε int feof ( FILE * stream ) ; ε νπνία παίξλεη έλα αλνηθηό αξρείν σο παξάκεηξν θαη επηζηξέθεη αιήζεηα εαλ ην αξρείν έρεη θηάζεη ζην ηέινο ηνπ (EOF), δηαθνξεηηθά επηζηξέθεη ςέκκαηα. Με ηελ θιήζε feof(stdin) κπνξνύκε λα ειέγμνπκε γηα EOF ζηελ ηππηθή είζνδν (CTRL-z ζηα windows, CTRL-d ζε unix, θ.η.ι.). Χαξνθόπεην Παλεπηζηήκην 16/41

Γξάςηκν ζε Αξρείν fprintf() Η ζπλάξηεζε int fprintf ( FILE * stream, const char * format,... ) ; ιεηηνπξγεί αθξηβώο όπσο ε ζπλάξηεζε printf() αιιά ζηέιλεη ηελ έμνδν ζηελ ξνή stream. Οπζηαζηηθά όηαλ γξάθνπκε printf ( "hello world\n" ); ζηελ πξαγκαηηθόηεηα γξάθνπκε fprintf ( stdout, "hello world\n" ) ; Χαξνθόπεην Παλεπηζηήκην 17/41

Κιείζηκν Αξρείνπ fclose() Όηαλ ηειεηώζεη ε ρξήζε ελόο αξρείνπ, ν πξνγξακκαηηζηήο πξέπεη λα θιήζεη απηό ην αξρείν. Κιείλνληαο ην αξρείν νπζηαζηηθά ιέκε ζην ζύζηεκα πσο δελ ζέινπκε λα ρξεζηκνπνηήζνπκε άιιν ην αξρείν απηό. Η ξνή πξνο ην αξρείν θαηαζηξέθεηαη. int fclose ( FILE * fp ) ; Η fclose() θξνληίδεη ώζηε λα γξαθνύλ όηη πιεξνθνξίεο δελ έρνπλ γξαθεί (βξίζθνληαη ζε θάπνηνλ buffer). Χαξνθόπεην Παλεπηζηήκην 18/41

Κιείζηκν Αξρείνπ fclose() ε πεξίπησζε πνπ ν πξνγξακκαηηζηήο μεράζεη λα θιείζεη έλα αξρείν, ηα ζύγρξνλα ιεηηνπξγηθά ζπζηήκαηα ζα θιείζνπλ ην αξρείν απηόκαηα κεηά ην ηέινο ηνπ πξνγξάκκαηνο. Δίλαη όκσο ζσζηή πξνγξακκαηηζηηθή ηαθηηθή λα θξνληίδνπλ ηα πξνγξάκκαηα καο λα ειεπζεξώλνπλ νπνηνπζδήπνηε πόξνπο ηνπ ζπζηήκαηνο ρξεζηκνπνηνύλ. Χαξνθόπεην Παλεπηζηήκην 19/41

Γεκηνπξγία Αξρείνπ εηξηαθήο Πξόζβαζεο Παξάδεηγκα 24 #include < s t d i o. h> 25 26 main ( ) 27 { 28 int AM ; 29 char name [ 3 0 ] ; 30 31 FILE * fd ; 32 if ( ( fd=fopen ( "students.dat", "w" ) ) == NULL ) 33 printf ( "File could not be opened\n" ) ; 34 else { 35 printf ( "Enter AM and name,\n" ) ; 36 printf ( "Enter EOF to end input.\n" ) ; 37 printf ( "? " ) ; 38 scanf ( "%d%s", &AM, name ); 39 while (! feof ( stdin ) ) { 40 fprintf ( fd, "%d %s\n", AM, name ) ; 41 printf ( "? " ) ; 42 scanf ( "%d%s", &AM, name ); 43 } 44 fclose ( fd ); 45 } 46 } Χαξνθόπεην Παλεπηζηήκην 20/41

Γεκηνπξγία Αξρείνπ εηξηαθήο Πξόζβαζεο Παξάδεηγκα Δθηειώληαο ην πξνεγνύκελν πξόγξακκα Enter AM and name, Enter EOF to end input.? 11 Kwstas? 12 Eleni? 13 Nikos? δεκηνπξγείηαη ην αξρείν κε όλνκα students.dat ζηνλ ίδην θάθειν κε ην πξόγξακκα καο. Σν αξρείν απηό πεξηέρεη: 11 Kwstas 12 Eleni 13 Nikos Χαξνθόπεην Παλεπηζηήκην 21/41

Σξόπνη Αλνίγκαηνο Αξρείσλ Απιέο Μνξθέο Απιέο κνξθέο αλνίγκαηνο "w" γηα δεκηνπξγία αξρείνπ, ή γηα δηαγξαθή ησλ δεδνκέλσλ πξηλ από ηελ εγγξαθή. "r" γηα δηάβαζκα ππαξθηνύ αξρείνπ, άλνηγκα γηα αλάγλσζε. "a" γηα πξνζζήθε εγγξαθώλ ζην ηέινο ελόο ππαξθηνύ αξρείνπ, άλνηγκα γηα πξνζάξηεζε. Χαξνθόπεην Παλεπηζηήκην 22/41

Σξόπνη Αλνίγκαηνο Αξρείσλ ύλζεηεο Μνξθέο Δλεκέξσζεο ύλζεηεο κνξθέο ελεκέξσζεο (ηαπηόρξνλα αλάγλσζε θαη εγγξαθή) "r+" αλνίγεη αξρείν γηα αλάγλσζε θαη εγγξαθή. "w+" δεκηνπξγεί έλα αξρείν γηα αλάγλσζε θαη εγγξαθή. Δαλ ην αξρείν ππάξρεη ήδε ην αξρείν αλνίγεηαη θαη ράλνληαη ηα ηξέρνληα πεξηερόκελα ηνπ. "a+" άλνηγκα γηα αλάγλσζε θαη εγγξαθή, ε εγγξαθή γίλεηαη ζην ηέινο ηνπ αξρείνπ. Δαλ ην αξρείν δελ ππάξρεη, δεκηνπξγείηαη. Χαξνθόπεην Παλεπηζηήκην 22/41

Αλάγλσζε Γεδνκέλσλ από Αξρείν εηξηαθήο Πξνζπέιαζεο Γηάβαζκα δεδνκέλσλ από αξρείν ζεηξηαθήο πξνζπέιαζεο κπνξεί λα γίλεη κε ηελ ζπλάξηεζε int fscanf ( FILE * stream, const char * format,... ) ; Πξέπεη απιά λα αλνίμνπκε ην αξρείν ζηελ θαηάιιειε θαηάζηαζε, π.ρ "r". Χαξνθόπεην Παλεπηζηήκην 23/41

Αλάγλσζε Γεδνκέλσλ Αξρείν εηξηαθήο Πξνζπέιαζεο 1 #include < s t d i o. h> 2 3 main ( ) 4 { 5 int AM ; 6 char name [ 3 0 ] ; 7 8 FILE * fd ; 9 if ( ( fd=fopen ( "students.dat", "r" ) ) == NULL ) 10 printf ( "File could not be opened\n" ) ; 11 else { 12 printf ( "%-5s%-13s\n", "AM", "Name" ) ; 13 fscanf ( fd, "%d%s", &AM, name ); 14 15 while (! feof ( fd ) ) { 16 printf ( "%-5d%-13s\n", AM, name ) ; 17 fscanf ( fd, "%d%s", &AM, name ); 18 } 19 fclose ( fd ); 20 } 21 } Χαξνθόπεην Παλεπηζηήκην 24/41

Αλάγλσζε Γεδνκέλσλ Αξρείν εηξηαθήο Πξνζπέιαζεο Δθηειώληαο ην πξόγξακκα ζηνλ ίδην θάθειν κε ην αξρείν "students.dat" ην πξνεγνύκελν πξόγξακκα εθηππώλεη: AM Name 11 Kwstas 12 Eleni 13 Nikos Χαξνθόπεην Παλεπηζηήκην 25/41

Γείθηεο Θέζεο Αξρείνπ Ο δείκηης θέζης αρτείοσ δείρλεη ζηελ επόκελε ζέζε αξρείνπ πνπ ζα ρξεζηκνπνηεζεί γηα αλάγλσζε ή εγγξαθή. Γηα παξάδεηγκα όηαλ αλνίγνπκε έλα αξρείν ν δείθηεο ζέζεο αξρείνπ δείρλεη ζηελ ζέζε 0. Ο δείθηεο ζέζε αξρείνπ είλαη έλαο αξηζκόο πνπ δειώλεη ηνλ αξηζκό ηνπ επόκελνπ byte ζην αξρείν γηα αλάγλσζε ή εγγξαθή. Χαξνθόπεην Παλεπηζηήκην 26/41

Πνιιαπιή εηξηαθή Πξνζπέιαζε Πνιιέο θνξέο ζέινπκε λα δηαβάζνπκε ηα δεδνκέλα ελόο αξρείνπ πεξηζζόηεξεο απν κηα θνξέο. H C καο επηηξέπεη λα επαλαηνπνζεηήζνπκε ηνλ δείκηη θέζης αρτείοσ ελόο πξνγξάκκαηνο ζηελ αξρή ηνπ αξρείνπ. Η ζπλάξηεζε ιέγεηαη: void rewind ( FILE * stream ) ; Χαξνθόπεην Παλεπηζηήκην 27/41

Πξνβιήκαηα εηξηαθήο Πξνζπέιαζεο Οη εγγξαθέο πνπ ρξεζηκνπνηήζακε σο ηώξα δελ έρνπλ ζηαζεξό κέγεζνο. Γηα απηόλ ηνλ ιόγν δελ κπνξνύκε εύθνια λα ελεκεξώζνπκε εγγξαθέο ζηελ ίδηα ζέζε ελόο αξρείνπ. Γηα παξάδεηγκα δελ κπνξνύκε λα αλαλεώζνπκε ηελ εγγξαθή 11 Kwstas κε 11 Aleksandros αθνύ ε θαηλνύξηα εγγξαθή είλαη κεγαιύηεξε ζε κέγεζνο θαη ζα επηθαιύςεη ηελ επόκελε εγγξαθή. πλήζσο επαλαγξάθνπκε όιν ην ζεηξηαθό αξρείν εαλ ζέινπκε λα θάλνπκε ελεκεξώζεηο. Χαξνθόπεην Παλεπηζηήκην 28/41

Αξρεία Σπραίαο Πξνζπέιαζεο Η C καο παξέρεη ηελ δπλαηόηεηα λα κεηαθηλνύκε ηνλ δείθηε ζέζεο αξρείνπ. Απηό καο επηηξέπεη λα πξνζπειάζνπκε άκεζα θαη ρσξίο θαζπζηέξεζε ζπγθεθξηκέλα ζεκεία ελόο αξρείνπ. Γηα επθνιία κπνξνύκε λα νξγαλώζνπκε ην αξρείν καο κε ζηαζεξνύ κεγέζνπο εγγξαθέο θαη έηζη λα έρνπκε άκεζε πξόζβαζε ζε θάζε εγγξαθή. Χαξνθόπεην Παλεπηζηήκην 29/41

Αξρεία Σπραίαο Πξνζπέιαζεο fwrite() Η ζπλάξηεζε fwrite() κεηαθέξεη έλα ζπγθεθξηκέλν αξηζκό bytes αξρίδνληαο ζε κηα θαζνξηζκέλε ζέζε ζηελ κλήκε, ζε έλα αξρείν. size_t fwrite ( const void * ptr, size_t size, size_t nmemb, FILE * stream ) ; Πην ζπγθεθξηκέλα γξάθεη nmemb ζηνηρεία, ην θαζέλα κε κήθνο size bytes, ζηε ξνή stream. Σα ζηνηρεία βξίζθνληαη ζηελ ζέζε ptr ηεο κλήκεο. Η ζπλάξηεζε επηζηξέθεη ηνλ αξηζκό ησλ ζηνηρείσλ πνπ γξάθηεθαλ. Δαλ γίλεη θάπνην ιάζνο ηόηε ν αξηζκόο είλαη κηθξόηεξνο ή κεδέλ. Χαξνθόπεην Παλεπηζηήκην 30/41

Αξρεία Σπραίαο Πξνζπέιαζεο fread() Η ζπλάξηεζε fread() κεηαθέξεη έλα ζπγθεθξηκέλν αξηζκό bytes από έλα αξρείν ζε κηα θαζνξηζκέλε ζέζε ζηελ κλήκε. size_t fread ( void * ptr, size_t size, size_t nmemb, FILE * stream ); Πην ζπγθεθξηκέλα δηαβάδεη nmemb ζηνηρεία, ην θαζέλα κε κήθνο size bytes, από ηε ξνή stream. Σα ζηνηρεία απνζεθεύνληαη ζηελ ζέζε ptr ηεο κλήκεο. Η ζπλάξηεζε επηζηξέθεη ηνλ αξηζκό ησλ ζηνηρείσλ πνπ δηαβάζηεθαλ. Δαλ γίλεη θάπνην ιάζνο ή ζπκβεί EOF ηόηε ν αξηζκόο είλαη κηθξόηεξνο ή κεδέλ. Χαξνθόπεην Παλεπηζηήκην 31/41

Γηαθνξέο fprintf() θαη fwrite() Η ζπλάξηεζε fwrite() ρξεζηκνπνηεί ζηαζεξό αξηζκό από bytes ελώ ε fprintf() όρη. int n = 99999; FILE * fd = fopen ( "test.dat", "w" ); fprintf ( fd, "%d", n ); Η fprintf() ζα γξάςεη 5 bytes ζηελ έμνδν. Με άιια ιόγηα ην κέγεζνο ηεο εμόδνπ εμαξηάηαη από ηα ςεθία ηνπ αξηζκνύ. Χαξνθόπεην Παλεπηζηήκην 32/41

Γηαθνξέο fprintf() θαη fwrite() Η ζπλάξηεζε fwrite() ρξεζηκνπνηεί ζηαζεξό αξηζκό από bytes ελώ ε fprintf() όρη. int n = 99999; FILE * fd = fopen ( "test.dat", "w" ); fwrite ( &n, sizeof ( int ), 1, fd ); Η fwrite() γξάθεη νπνηνδήπνηε αθέξαην ρξεζηκνπνηώληαο 4 bytes. Χαξνθόπεην Παλεπηζηήκην 33/41

Αξρεία Σπραίαο Πξνζπέιαζεο πλήζσο γξάθνπκε ζπγθεθξηκέλνπ κεγέζνπο εγγξαθέο ζηα αξρεία ηπραίαο πξνζπέιαζεο, ώζηε λα κπνξνύκε άκεζα λα πξνζπειάζνπκε ηελ i εγγξαθή. 0 100 200 300 Χαξνθόπεην Παλεπηζηήκην 34/41

Γεκηνπξγία Αξρείνπ Σπραίαο Πξνζπέιαζεο εηξηαθή Αξρηθνπνίεζε 1 #include < s t d i o. h> 2 3 typedef struct { 4 int AM ; 5 char name [ 5 0 ] ; 6 } student ; 7 8 main ( ) { 9 int i ; 10 student blankstudent = { 0, "" }; 11 FILE * fd ; 12 13 if ( ( fd=fopen ( "random.dat", "w" ) ) = = NULL ) 14 fprintf ( stderr, "File could not be opened.\n" ) ; 15 else { 16 for ( i = 0; i < 100; i++ ) 17 fwrite ( &blankstudent, sizeof ( student ), 1, fd ); 18 fclose ( fd ) ; 19 } 20 } Χαξνθόπεην Παλεπηζηήκην 35/41

Μεηαθίλεζε Γείθηε Θέζεο Αξρείνπ fseek() Η ζπλάξηεζε int fseek ( FILE * stream, long offset, int whence ) ; ζέηεη ηνλ δείθηε ζέζεο αξρείνπ. Η λέα ζέζε (ζε bytes) πξνθύπηεη πξνζζέηνληαο offset ζηελ ζέζε whence. Η ζέζε whence είλαη είηε κηα ζέζε ζε bytes είηε κηα από ηηο ζηαζεξέο SEEK_SET, SEEK_CUR θαη SEEK_END. ηελ δεύηεξε πεξίπησζε ην offset είλαη ζρεηηθό κε ηελ αξρή ηνπ αξρείνπ, ηελ ησξηλή ζέζε θαη ην ηέινο ηνπ αξρείνπ αληίζηνηρα. Μηα επηηπρήο θιήζε ηεο fseek() ζβήλεη ηελ έλδεημε EOF. Χαξνθόπεην Παλεπηζηήκην 36/41

Δύξεζε Γείθηε Θέζεο Αξρείνπ ftell() Η ζπλάξηεζε long ftell ( FILE * stream ) ; επηζηξέθεη ην δείθηε ζέζεο αξρείνπ (ζε bytes). Χαξνθόπεην Παλεπηζηήκην 37/41

Δγγξαθή ζε Αξρείν Σπραίαο Πξνζπέιαζεο 1 #include < s t d i o. h> 2 3 typedef struct { 4 int id ; 5 char name [ 5 0 ] ; 6 } student ; 7 8 main ( ) 9 { 10 FILE * fd ; 11 student s ; 12 13 if ( ( fd=fopen ( "random.dat", "r+" ) ) == NULL ) 14 printf ( "File could not be opened\n" ) ; 15 else { Χαξνθόπεην Παλεπηζηήκην 38/41

Δγγξαθή ζε Αξρείν Σπραίαο Πξνζπέιαζεο πλέρεηα 16 printf ( "Enter id and name,\n" ) ; 17 printf ( "Enter EOF to end input.\n" ) ; 18 printf ( "? " ) ; 19 scanf ( "%d%s", &s. id, s. name ); 20 21 while (! feof ( stdin ) ) { 22 if ( s. id >= 0 && s. id < 100 ) { 23 fseek ( fd, s. id * sizeof ( student ), SEEK_SET ); 24 fwrite ( &s, sizeof ( student ), 1, fd ); 25 } 26 else 27 fprintf ( stderr, "0 <= id <= 99\n" ); 28 printf ( "? " ) ; 29 scanf ( "%d%s", &s. id, s. name ); 30 } 31 fclose ( fd ); 32 } 33 } Χαξνθόπεην Παλεπηζηήκην 39/41

Αλάγλσζε από Αξρείν Σπραίαο Πξνζπέιαζεο 1 #include < s t d i o. h> 2 3 typedef struct { 4 int id ; 5 char name [ 5 0 ] ; 6 } student ; 7 8 main ( ) 9 { 10 FILE * fd ; 11 student s ; 12 int id ; 13 14 if ( ( fd=fopen ( "random.dat", "r" ) ) == NULL ) 15 printf ( "File could not be opened\n" ) ; 16 else { Χαξνθόπεην Παλεπηζηήκην 40/41

Αλάγλσζε από Αξρείν Σπραίαο Πξνζπέιαζεο πλέρεηα 17 printf ( "Enter id,\n" ) ; 18 printf ( "Enter EOF to end input.\n" ) ; 19 printf ( "? " ) ; 20 scanf ( "%d", &id ); 21 22 while (! feof ( stdin ) ) { 23 if ( id >= 0 && id < 100 ) { 24 fseek ( fd, id * sizeof ( student ), SEEK_SET ); 25 fread ( &s, sizeof ( student ), 1, fd ); 26 printf ( "Student's name is %s\n", s. name ) ; 27 } 28 else 29 fprintf ( stderr, "0 <= id <= 99\n" ); 30 printf ( "? " ) ; 31 scanf ( "%d", &id ); 32 } 33 fclose ( fd ); 34 } 35 return 0 ; 36 } Χαξνθόπεην Παλεπηζηήκην 41/41