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

Το πρόγραμμα που βρίσκεται στο αρχείο READLINE.C παρουσιάζει ένα 
παράδειγμα ανάγνωσης ανά γραμμή. Το πρόγραμμα είναι όμοιο με αυτά που 
συζητήθηκαν προηγούμενα με βασική διαφορά τη χρήση της συνάρτησης fgets η 
οποία διαβάζει μιά ολόκληρη γραμμή, συμπεριλαμβανομένου και του χαρακτήρα 
αλλαγής γραμμής NL, και τοποθετεί το περιεχόμενο της γραμμής σε έναν 
απομονωτή. Στο τέλος τοποθετεί και τον μηδενικό χαρακτήρα έτσι ώστε ο το 
περιεχόμενο του απομονωτή είναι μιά κανονική συμβολοσειρά. 

Η δήλωση προτύπου της συνάρτησης fgets είναι

char *fgets(char *s, int n, FILE *ioptr);

Η διεύθυνση (δηλαδή το όνομα) του απομονωτή παραλαβής δίνεται από τη 
πρώτη παράμετρο s,  ενώ η δεύτερη παράμετρος n δίνει τον μέγιστο αριθμό 
χαρακτήρων που μπορούν να διαβαστούν, συμπεριλαμβανομένου και του NL. Η 
τελευταία παράμετρος δίνει τη διέυθυνση του απομονωτή αρχείου. Η συνάρτηση 
σταματά όταν είτε διαβάσει τον μέγιστο επιτρεπόμενο αριθμό χαρακτήρων ή 
συναντήσει τέλος αρχείου (EOF). Η συνάρτηση επιστρέφει με return και πάλι 
την διεύθυνση του απομονωτή παραλαβής ή επιστρέφει έναν μηδενικό δείκτη σε 
περίπτωση λάθους ή EOF.  

Στο πρόγραμμα χρησιμοποιούμε το δείκτη c γιά την επιστρεφόμενη τιμή της 
fgets. Κατά την διάρκεια της κανονικής λειτουργίας της επανάληψης do-while 
θα έχουμε c = oneword. Κατά την ανάγνωση της τελευταίας γραμμής ο δείκτης 
c παίρνει τη τιμή του μηδενικού δείκτη αφού συνατούμε EOF. Το αποτέλεσμα 
δίνεται αμέσως 

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.

Να σημειωθεί οτι υπάρχει και η αντίστοιχη συνάρτηση γραψίματος fputs με 
δήλωση προτύπου

fputs(char *s, FILE *ioptr);

που γράφει τη συμβολοσειρά s στον απομονωτή αρχείου ioptr. Δεν προστίθεται 
χαρακτήρας NL ούτε επιστρέφεται καμμία τιμή.

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