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