Ανάγνωση από αρχείο ανά χαρακτήρα |
Το πρόγραμμα που βρίσκεται στο αρχείο 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. |
![]() |
![]() |
![]() |