Περιγράφει πώς ο προγραμματιστής C δημιουργεί, ανοίγει και κλείνει ένα αρχείο κειμένου ή ένα δυαδικό αρχείο.
Ένα αρχείο, σημαίνει μια σειρά byte, είτε πρόκειται για αρχείο κειμένου είτε για δυαδικό αρχείο, η γλώσσα C, όχι μόνο παρέχει πρόσβαση στις λειτουργίες ανώτατου επιπέδου, αλλά παρέχει επίσης την υποκείμενη κλήση (OS) για την επεξεργασία αρχείων στη συσκευή αποθήκευσης . Αυτό το κεφάλαιο θα εξηγήσει τις σημαντικές κλήσεις στη διαχείριση εγγράφων.
ανοιχτό αρχείο
Συνήθως χρησιμοποιώντας τη συνάρτηση fopen () για να δημιουργήσετε ένα νέο αρχείο ή να ανοίξετε ένα υπάρχον αρχείο, αυτή η κλήση αρχικοποιεί ένα αντικείμενο του τύπου FILE που περιέχει όλες τις απαραίτητες πληροφορίες για τον έλεγχο της ροής. Εδώ είναι το πρωτότυπο αυτής της κλήσης συνάρτησης:
FILE *fopen ( const char * όνομα αρχείου , const char * mode );
Εδώ το όνομα αρχείου είναι μια συμβολοσειρά για την ονομασία ενός αρχείου, η τιμή της λειτουργίας πρόσβασης μπορεί να είναι μία από τις ακόλουθες τιμές:
πρότυπο | περιγραφή |
r | Ανοίξτε ένα υπάρχον αρχείο κειμένου που επιτρέπει την ανάγνωσή του. |
w | Ανοίξτε ένα αρχείο κειμένου που επιτρέπει την εγγραφή στο αρχείο. Εάν το αρχείο δεν υπάρχει, δημιουργείται ένα νέο αρχείο. Εδώ, το πρόγραμμά σας γράφει το περιεχόμενο από την αρχή του αρχείου. Εάν το αρχείο υπάρχει, θα περικοπεί σε μηδενικό μήκος και θα ξαναγραφτεί. |
a | Ανοίξτε ένα αρχείο κειμένου και γράψτε στο αρχείο σε λειτουργία προσάρτησης. Εάν το αρχείο δεν υπάρχει, δημιουργείται ένα νέο αρχείο. Εδώ, το πρόγραμμά σας προσθέτει περιεχόμενο στα αρχεία που έχετε ήδη. |
r+ | Ανοίξτε ένα αρχείο κειμένου που σας επιτρέπει να διαβάζετε και να γράφετε το αρχείο. |
w+ | Ανοίξτε ένα αρχείο κειμένου που σας επιτρέπει να διαβάζετε και να γράφετε το αρχείο. Εάν το αρχείο υπάρχει ήδη, το αρχείο περικόπτεται σε μηδενικό μήκος και εάν το αρχείο δεν υπάρχει, δημιουργείται ένα νέο αρχείο. |
a+ | Ανοίξτε ένα αρχείο κειμένου που σας επιτρέπει να διαβάζετε και να γράφετε το αρχείο. Εάν το αρχείο δεν υπάρχει, δημιουργείται ένα νέο αρχείο. Η ανάγνωση ξεκινά στην αρχή του αρχείου και η εγγραφή είναι μόνο σε λειτουργία προσάρτησης. |
Εάν υποβληθεί σε επεξεργασία δυαδικό αρχείο, χρησιμοποιήστε την ακόλουθη λειτουργία πρόσβασης για να αντικαταστήσετε το παραπάνω:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
κλειστό αρχείο
Για να κλείσετε το αρχείο, χρησιμοποιήστε τη συνάρτηση fclose(). Το πρωτότυπο της λειτουργίας είναι το εξής:
int fclose ( FILE *fp );
- Εάν το αρχείο κλείσει επιτυχώς, η συνάρτηση fclose() επιστρέφει μηδέν και εάν το σφάλμα επιστρέφει EOF. Αυτή η λειτουργία, στην πραγματικότητα, αφαιρεί τα δεδομένα από το buffer, κλείνει το αρχείο και απελευθερώνει όλη τη μνήμη που χρησιμοποιείται για αυτό το αρχείο. Ο ΕΟΦ είναι μια σταθερά που ορίζεται στο αρχείο κεφαλίδας stdio.h
Η τυπική βιβλιοθήκη C παρέχει διάφορες λειτουργίες για την ανάγνωση και εγγραφή αρχείων με χαρακτήρες ή ως συμβολοσειρά σταθερού μήκους.
Γράψτε στο αρχείο
Ακολουθούν οι απλούστερες λειτουργίες για να γράψετε χαρακτήρες στη ροή:
int fputc ( int c , FILE *fp );
Η συνάρτηση fputc () γράφει την τιμή χαρακτήρων της παραμέτρου c στη ροή εξόδου στην οποία δείχνει το fp. Εάν οι εγγραφές είναι επιτυχείς, επιστρέφει τον γραπτό χαρακτήρα και τον ΕΟΦ εάν παρουσιαστεί σφάλμα. Μπορείτε να χρησιμοποιήσετε την ακόλουθη συνάρτηση για να γράψετε μια συμβολοσειρά που τελειώνει με null στη ροή:
int fputs (const char *s, FILE *fp);
Η συνάρτηση fputs () γράφει τη συμβολοσειρά s στη ροή εξόδου όπου δείχνει το fp. Εάν οι εγγραφές πετύχουν, επιστρέφει μια μη αρνητική τιμή και τον ΕΟΦ εάν παρουσιαστεί σφάλμα. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση int fprintf (FILE * fp, const char * μορφή,...) γράφει μια συμβολοσειρά στο αρχείο. Δοκιμάστε το ακόλουθο παράδειγμα:
Σημείωση: Βεβαιωθείτε ότι έχετε διαθέσιμο κατάλογο tmp και εάν δεν υπάρχει, πρέπει πρώτα να τον δημιουργήσετε στον υπολογιστή σας.
/ tmp είναι συνήθως ένας προσωρινός κατάλογος στο σύστημα Linux. Εάν εκτελείτε στο σύστημα Windows, πρέπει να το τροποποιήσετε σε έναν υπάρχοντα κατάλογο στο τοπικό περιβάλλον, όπως: C: \ tmp, D: \ tmp, κ.λπ.
ζωντανό παράδειγμα
#συμπεριλαμβάνω
Όταν ο παραπάνω κώδικας μεταγλωττιστεί και εκτελεστεί, δημιουργεί ένα νέο αρχείο test.txt στον κατάλογο / tmp. Και γράφει σε δύο γραμμές χρησιμοποιώντας δύο διαφορετικές λειτουργίες. Ας διαβάσουμε αυτό το αρχείο στη συνέχεια.
Διαβάστε το αρχείο
Η παρακάτω είναι η απλούστερη συνάρτηση για την ανάγνωση ενός μεμονωμένου χαρακτήρα από ένα αρχείο:
int fgetc ( FILE * fp );
Η συνάρτηση fgetc () διαβάζει έναν χαρακτήρα από το αρχείο εισόδου στο οποίο δείχνει το fp. Η επιστρεφόμενη τιμή είναι ο χαρακτήρας ανάγνωσης και ο EOF εάν παρουσιαστεί σφάλμα. Η ακόλουθη λειτουργία σάς επιτρέπει να διαβάσετε μια συμβολοσειρά από μια ροή:
char *fgets (char *buf, int n, FILE *fp);
Η συνάρτηση fgets () διαβάζει n-1 χαρακτήρες από τη ροή εισόδου που κατευθύνεται από fp. Αντιγράφει τη συμβολοσειρά ανάγνωσης στο buffer buffer και προσθέτει έναν μηδενικό χαρακτήρα στο τέλος για να τερματίσει τη συμβολοσειρά.
Εάν αυτή η συνάρτηση συναντήσει έναν χαρακτήρα διακεκομμένης γραμμής '\ n' ή τον EOF του τέλους του αρχείου πριν από την ανάγνωση του τελευταίου χαρακτήρα, τότε επιστρέφει μόνο στους αναγνωσμένους χαρακτήρες, συμπεριλαμβανομένων των αλλαγών γραμμής. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση int fscanf (FILE * fp, const char * format,...) για να διαβάσετε τη συμβολοσειρά από το αρχείο, αλλά σταματά να διαβάζει όταν συναντήσετε το πρώτο διάστημα και την πρώτη αλλαγή γραμμής.
ζωντανό παράδειγμα
#συμπεριλαμβάνω
Όταν ο παραπάνω κώδικας μεταγλωττιστεί και εκτελεστεί, διαβάζει τα αρχεία που δημιουργήθηκαν στην προηγούμενη ενότητα, παράγοντας τα ακόλουθα αποτελέσματα:
1: Αυτό το 2: δοκιμάζει για fprintf...
3: Αυτό είναι δοκιμή για fputs...
Πρώτον, η μέθοδος της fscanf() διαβάζει μόνο This .επειδή συναντά ένα κενό στο πίσω μέρος. Δεύτερον, καλέστε το functon fgets () για να διαβάσετε το υπόλοιπο μέρος μέχρι το τέλος της γραμμής. Τέλος, καλέστε το fgets () για να διαβάσετε πλήρως τη δεύτερη σειρά.
Δυαδική συνάρτηση I/O
Οι ακόλουθες δύο συναρτήσεις χρησιμοποιούνται για τη δυαδική είσοδο και έξοδο:
size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );
Και οι δύο συναρτήσεις διαβάζονται και γράφουν για μπλοκ αποθήκευσης - συνήθως πίνακες ή δομές.
Τα παραπάνω σχετικά με την ανάγνωση και εγγραφή αρχείων C ανήκει στην HDV Phoelectron Technology Ltd., μια τεχνική λειτουργία λογισμικού. Και η εταιρεία για εξοπλισμό σχετικό με το δίκτυο (όπως: ACONU/ επικοινωνίαONU/ ευφυήςONU/ ίναONU, κ.λπ.) έχει συγκεντρώσει μια ισχυρή ομάδα λογισμικού, για κάθε πελάτη να προσαρμόζει τις αποκλειστικές απαιτήσεις που το χρειάζεται, και να αφήνει τα προϊόντα μας πιο έξυπνα και προηγμένα.