Ανάγνωση από αρχείο ανά χαρακτήρα

Το πρόγραμμα που βρίσκεται στο αρχείο READCHAR.C διαπραγματεύεται την 
αντίστροφη λειτουργία από αυτή που μόλις περιγράφηκε, δηλαδή την ανάγνωση 
χαρακτήρων από ένα αρχείο. Οι δηλώσεις είναι ελάχιστες: ο δείκτης απομονωτή 
αρχείου funny και μιά μεταβλητή χαρακτήρα c.  

Το πρώτο ενδιαφέρον σημείο βρίσκεται στο έλεγχο ύπαρξης του αρχείου προς 
ανάγνωση. Όταν ανοίγουμε ένα αρχείο γιά διάβασμα ή επέκταση τέτοιος 
έλεγχος δεν απαιτείται γιατί το σύστημα δημιουργεί το αρχείο αν δεν υπάρχει. 
Αν όμως ανοίγουμε ένα αρχείο αποκλειστικά γιά ανάγνωση τότε η ύπαρξή του 
πρέπει να πιστοποιηθεί πριν προχωρήσουμε στο πρόγραμμα. Έτσι η τιμή του 
δείκτη funny, δηλαδή η διέυθυνση του απομοωτή ελέγχεται. Εάν αυτή έχει 
μηδενική (NULL) τιμή τότε το πρόγραμμα διακόπτεται με μήνυμα λάθους.


Το κύριο μέρος του προγράμματος είναι μιά επανάληψη do-while που διαβάζει 
έναν χαρακτήρα από το αρχείο και τον εμφανίζει στην οθόνη. Η συνάρτηση 
ανάγνωσης χαρακτήρα είναι η getc που βρίσκεται σε αντιστοιχία με την getch ή 
την getchar χωρίς την περιπλοκή του απομονωτή πληκτρολογίου του DOS. Η 
δήλωση προτύπου είναι

int getc(FILE *ioptr);

με τον χαρακτήρα να επιστρέφεται με return. Ο τερματισμός της επανάληψης 
επιτυγχάνεται με την ανάγνωση του ειδικού χαρακτήρα τέλους του αρχείου (End 
Of File, EOF) που ορίζεται στο αρχείο κεφαλή STDIO.H και συνήθως αντιστοιχεί 
στην ακέραια τιμή -1. 

ΠΡΟΣΟΧΗ: Ο τύπος char επιτρέπει έχει εύρος τιμών από το -128 έως το 127 και 
μπορεί να αναπαραστήσει το -1. Η χρήση του τύπου unsigned char ή unsigned 
int δεν επιτρέπει την ορθή παράσταση του -1 και εμποδίζει τον έλεγχο του EOF.

Η εκτέλεση του προγράμματος εμφανίζει τα περιεχόμενα του αρχείου 
TENLINES.TXT στην οθόνη. 

This is an example line.  Line number 1
This is an example line.  Line number 2
This is an example line.  Line number 3
This is an example line.  Line number 4
This is an example line.  Line number 5
This is an example line.  Line number 6
This is an example line.  Line number 7
This is an example line.  Line number 8
This is an example line.  Line number 9
This is an example line.  Line number 10
Additional lines.
Additional lines.
Additional lines.
Additional lines.
Additional lines.
Additional lines.
Additional lines.
Additional lines.
Additional lines.
Additional lines.

Περιεχόμενα Κεφαλαίου