C Files I / O: Δημιουργία, άνοιγμα, ανάγνωση, σύνταξη και κλείσιμο αρχείου

Πίνακας περιεχομένων:

Anonim

C Διαχείριση αρχείων

Ένα αρχείο μπορεί να χρησιμοποιηθεί για την αποθήκευση μεγάλου όγκου επίμονων δεδομένων. Όπως πολλές άλλες γλώσσες, το "C" παρέχει τις ακόλουθες λειτουργίες διαχείρισης αρχείων,

  1. Δημιουργία αρχείου
  2. Άνοιγμα αρχείου
  3. Διαβάζοντας ένα αρχείο
  4. Γράφοντας σε ένα αρχείο
  5. Κλείσιμο αρχείου

Ακολουθούν οι σημαντικότερες λειτουργίες διαχείρισης αρχείων που διατίθενται στο "C"

λειτουργία σκοπός
fopen () Δημιουργία αρχείου ή άνοιγμα υπάρχοντος αρχείου
fclose () Κλείσιμο αρχείου
fprintf () Γράφοντας ένα μπλοκ δεδομένων σε ένα αρχείο
fscanf () Ανάγνωση δεδομένων μπλοκ από ένα αρχείο
πάρει () Διαβάζει έναν μόνο χαρακτήρα από ένα αρχείο
putc () Γράφει έναν μόνο χαρακτήρα σε ένα αρχείο
getw () Διαβάζει έναν ακέραιο από ένα αρχείο
putw () Σύνταξη ακέραιου αριθμού σε αρχείο
fseek () Ορίζει τη θέση ενός δείκτη αρχείου σε μια καθορισμένη θέση
ftell () Επιστρέφει την τρέχουσα θέση ενός δείκτη αρχείου
προς τα πίσω () Ορίζει το δείκτη του αρχείου στην αρχή ενός αρχείου

Σε αυτό το σεμινάριο, θα μάθετε-

  • Πώς να δημιουργήσετε ένα αρχείο
  • Πώς να κλείσετε ένα αρχείο:
  • Γράφοντας σε ένα αρχείο
    • Λειτουργία fputc ():
    • Fputs () Λειτουργία:
    • Λειτουργία fprintf ():
  • Ανάγνωση δεδομένων από ένα αρχείο
  • Διαδραστικό αρχείο Ανάγνωση και εγγραφή με getc και putc

Πώς να δημιουργήσετε ένα αρχείο

Όποτε θέλετε να εργαστείτε με ένα αρχείο, το πρώτο βήμα είναι να δημιουργήσετε ένα αρχείο. Ένα αρχείο δεν είναι παρά χώρος στη μνήμη όπου αποθηκεύονται τα δεδομένα.

Για τη δημιουργία ενός αρχείου σε ένα πρόγραμμα «C» ακολουθείται η σύνταξη,

FILE *fp;fp = fopen ("file_name", "mode");

Στην παραπάνω σύνταξη, το αρχείο είναι μια δομή δεδομένων που ορίζεται στην τυπική βιβλιοθήκη.

Το fopen είναι μια τυπική λειτουργία που χρησιμοποιείται για το άνοιγμα ενός αρχείου.

  • Εάν το αρχείο δεν υπάρχει στο σύστημα, τότε δημιουργείται και στη συνέχεια ανοίγει.
  • Εάν υπάρχει ήδη ένα αρχείο στο σύστημα, τότε ανοίγει απευθείας χρησιμοποιώντας αυτήν τη λειτουργία.

Το fp είναι ένας δείκτης αρχείου που δείχνει το αρχείο τύπου.

Κάθε φορά που ανοίγετε ή δημιουργείτε ένα αρχείο, πρέπει να καθορίσετε τι πρόκειται να κάνετε με το αρχείο. Ένα αρχείο στον προγραμματισμό «C» μπορεί να δημιουργηθεί ή να ανοίξει για λόγους ανάγνωσης / γραφής. Χρησιμοποιείται μια λειτουργία για να καθορίσετε εάν θέλετε να ανοίξετε ένα αρχείο για οποιονδήποτε από τους παρακάτω σκοπούς. Ακολουθούν οι διαφορετικοί τύποι λειτουργιών στον προγραμματισμό «C» που μπορούν να χρησιμοποιηθούν ενώ εργάζεστε με ένα αρχείο.

Λειτουργία αρχείου Περιγραφή
ρ Ανοίξτε ένα αρχείο για ανάγνωση. Εάν ένα αρχείο βρίσκεται σε λειτουργία ανάγνωσης, τότε δεν διαγράφονται δεδομένα εάν ένα αρχείο υπάρχει ήδη σε ένα σύστημα.
β Ανοίξτε ένα αρχείο για γραφή. Εάν ένα αρχείο βρίσκεται σε λειτουργία γραφής, τότε δημιουργείται ένα νέο αρχείο εάν δεν υπάρχει καθόλου αρχείο. Εάν ένα αρχείο υπάρχει ήδη σε ένα σύστημα, τότε όλα τα δεδομένα μέσα στο αρχείο περικόπτονται και ανοίγουν για λόγους γραφής.
ένα Ανοίξτε ένα αρχείο σε λειτουργία προσάρτησης. Εάν ένα αρχείο βρίσκεται σε λειτουργία προσάρτησης, τότε το αρχείο ανοίγει. Το περιεχόμενο στο αρχείο δεν αλλάζει.
r + ανοιχτό για ανάγνωση και γραφή από την αρχή
w + ανοιχτό για ανάγνωση και γραφή, αντικατάσταση αρχείου
ένα + ανοιχτό για ανάγνωση και γραφή, προσαρτώντας στο αρχείο

Στη δεδομένη σύνταξη, το όνομα αρχείου και ο τρόπος λειτουργίας καθορίζονται ως συμβολοσειρές, επομένως πρέπει πάντα να περικλείονται εντός διπλών εισαγωγικών.

Παράδειγμα:

#include int main() {FILE *fp;fp = fopen ("data.txt", "w");}

Παραγωγή:

Το αρχείο δημιουργείται στον ίδιο φάκελο όπου έχετε αποθηκεύσει τον κωδικό σας.

Μπορείτε να καθορίσετε τη διαδρομή όπου θέλετε να δημιουργήσετε το αρχείο σας

#include int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}

Πώς να κλείσετε ένα αρχείο

Κάποιος πρέπει πάντα να κλείνει ένα αρχείο όποτε τελειώνουν οι λειτουργίες στο αρχείο. Αυτό σημαίνει ότι τα περιεχόμενα και οι σύνδεσμοι προς το αρχείο τερματίζονται. Αυτό αποτρέπει τυχαία ζημιά στο αρχείο.

Το 'C' παρέχει τη λειτουργία fclose για την εκτέλεση λειτουργίας κλεισίματος αρχείων. Η σύνταξη του fclose έχει ως εξής,

fclose (file_pointer);

Παράδειγμα:

FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);

Η συνάρτηση fclose παίρνει ένα δείκτη αρχείου ως όρισμα. Στη συνέχεια, το αρχείο που σχετίζεται με το δείκτη αρχείου κλείνει με τη βοήθεια της λειτουργίας fclose. Επιστρέφει 0 εάν το κλείσιμο ήταν επιτυχές και EOF (τέλος αρχείου) εάν προέκυψε σφάλμα κατά το κλείσιμο του αρχείου.

Μετά το κλείσιμο του αρχείου, ο ίδιος δείκτης αρχείων μπορεί επίσης να χρησιμοποιηθεί με άλλα αρχεία.

Στον προγραμματισμό «C», τα αρχεία κλείνουν αυτόματα όταν τερματιστεί το πρόγραμμα. Το χειροκίνητο κλείσιμο ενός αρχείου γράφοντας τη λειτουργία fclose είναι μια καλή πρακτική προγραμματισμού.

Γράφοντας σε ένα αρχείο

Στο C, όταν γράφετε σε ένα αρχείο, οι χαρακτήρες νέας γραμμής '\ n' πρέπει να προστεθούν ρητά.

Η βιβλιοθήκη stdio προσφέρει τις απαραίτητες λειτουργίες για την εγγραφή σε ένα αρχείο:

  • fputc (char, file_pointer) : Γράφει έναν χαρακτήρα στο αρχείο που δείχνει το αρχείο_pointer.
  • fputs (str, file_pointer) : Γράφει μια συμβολοσειρά στο αρχείο που υποδεικνύεται από το αρχείο_pointer.
  • fprintf (file_pointer, str, variab__lists) : Εκτυπώνει μια συμβολοσειρά στο αρχείο που υποδεικνύεται από το αρχείο_pointer. Η συμβολοσειρά μπορεί προαιρετικά να περιλαμβάνει προσδιοριστές μορφής και μια λίστα μεταβλητών_ λίστες μεταβλητών.

Το παρακάτω πρόγραμμα δείχνει τον τρόπο εκτέλεσης γραφής σε ένα αρχείο:

Λειτουργία fputc ():

#include int main() {int i;FILE * fptr;char fn[50];char str[] = "Guru99 Rocks\n";fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"for (i = 0; str[i] != '\n'; i++) {/* write to file using fputc() function */fputc(str[i], fptr);}fclose(fptr);return 0;}

Παραγωγή:

Το παραπάνω πρόγραμμα γράφει έναν μόνο χαρακτήρα στο αρχείο fputc_test.txt μέχρι να φτάσει στο σύμβολο της επόμενης γραμμής "\ n" το οποίο δείχνει ότι η πρόταση γράφτηκε με επιτυχία. Η διαδικασία είναι να λάβετε κάθε χαρακτήρα του πίνακα και να το γράψετε στο αρχείο.

  1. Στο παραπάνω πρόγραμμα, έχουμε δημιουργήσει και ανοίξει ένα αρχείο που ονομάζεται fputc_test.txt σε λειτουργία εγγραφής και δηλώνουμε τη συμβολοσειρά μας που θα γραφτεί στο αρχείο.
  2. Κάνουμε μια λειτουργία χαρακτήρων κατά τη χρήση χαρακτήρων χρησιμοποιώντας το loop και βάζουμε κάθε χαρακτήρα στο αρχείο μας έως ότου συναντηθεί ο χαρακτήρας "\ n" και το αρχείο κλείνει χρησιμοποιώντας τη λειτουργία fclose

Fputs () Λειτουργία:

#include int main() {FILE * fp;fp = fopen("fputs_test.txt", "w+");fputs("This is Guru99 Tutorial on fputs,", fp);fputs("We don't need to use for loop\n", fp);fputs("Easier than fputc function\n", fp);fclose(fp);return (0);}

ΠΑΡΑΓΩΓΗ:

  1. Στο παραπάνω πρόγραμμα, έχουμε δημιουργήσει και ανοίξει ένα αρχείο που ονομάζεται fputs_test.txt σε λειτουργία εγγραφής.
  2. Αφού κάνουμε μια λειτουργία εγγραφής χρησιμοποιώντας τη συνάρτηση fputs () γράφοντας τρεις διαφορετικές χορδές
  3. Στη συνέχεια, το αρχείο έκλεισε χρησιμοποιώντας τη συνάρτηση fclose.

Λειτουργία fprintf ():

#include int main() {FILE *fptr;fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"/* write to file */fprintf(fptr, "Learning C with Guru99\n");fclose(fptr);return 0;}

ΠΑΡΑΓΩΓΗ:

  1. Στο παραπάνω πρόγραμμα δημιουργήσαμε και ανοίξαμε ένα αρχείο που ονομάζεται fprintf_test.txt σε λειτουργία εγγραφής.
  2. Αφού εκτελεστεί μια λειτουργία εγγραφής χρησιμοποιώντας τη συνάρτηση fprintf () γράφοντας μια συμβολοσειρά, τότε το αρχείο κλείνει χρησιμοποιώντας τη συνάρτηση fclose.

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

Υπάρχουν τρεις διαφορετικές λειτουργίες αφιερωμένες στην ανάγνωση δεδομένων από ένα αρχείο

  • fgetc (file_pointer): Επιστρέφει τον επόμενο χαρακτήρα από το αρχείο που δείχνει ο δείκτης του αρχείου. Όταν φτάσει το τέλος του αρχείου, το EOF αποστέλλεται πίσω.
  • fgets (buffer, n, file_pointer): Διαβάζει n-1 χαρακτήρες από το αρχείο και αποθηκεύει τη συμβολοσειρά σε ένα buffer στο οποίο ο χαρακτήρας NULL '\ 0' επισυνάπτεται ως ο τελευταίος χαρακτήρας.
  • fscanf (file_pointer, conversion_specifiers, variable_adresses) : Χρησιμοποιείται για την ανάλυση και ανάλυση δεδομένων. Διαβάζει χαρακτήρες από το αρχείο και εκχωρεί την εισαγωγή σε μια λίστα μεταβλητών δεικτών variab_adresses χρησιμοποιώντας προσδιοριστές μετατροπής. Λάβετε υπόψη ότι όπως και με το scanf, το fscanf σταματά να διαβάζει μια συμβολοσειρά όταν συναντάτε χώρο ή νέα γραμμή.

Το παρακάτω πρόγραμμα δείχνει την ανάγνωση από το αρχείο fputs_test.txt χρησιμοποιώντας συναρτήσεις fgets (), fscanf () και fgetc () αντίστοιχα:

#include int main() {FILE * file_pointer;char buffer[30], c;file_pointer = fopen("fprintf_test.txt", "r");printf("----read a line----\n");fgets(buffer, 50, file_pointer);printf("%s\n", buffer);printf("----read and parse data----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerchar str1[10], str2[2], str3[20], str4[2];fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read String4 |%s|\n", str4);printf("----read the entire file----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerwhile ((c = getc(file_pointer)) != EOF) printf("%c", c);fclose(file_pointer);return 0;}

Αποτέλεσμα:

----read a line----Learning C with Guru99----read and parse data----Read String1 |Learning|Read String2 |C|Read String3 |with|Read String4 |Guru99|----read the entire file----Learning C with Guru99

  1. Στο παραπάνω πρόγραμμα, έχουμε ανοίξει το αρχείο που ονομάζεται "fprintf_test.txt" το οποίο είχε προηγουμένως γραφτεί χρησιμοποιώντας τη συνάρτηση fprintf () και περιέχει τη συμβολοσειρά "Learning C with Guru99". Το διαβάσαμε χρησιμοποιώντας τη συνάρτηση fgets () που διαβάζει γραμμή προς γραμμή, όπου το μέγεθος του buffer πρέπει να είναι αρκετό για να χειριστεί ολόκληρη τη γραμμή.
  2. Ανοίγουμε ξανά το αρχείο για να επαναφέρετε το αρχείο δείκτη στην αρχή του αρχείου. Δημιουργήστε διάφορες μεταβλητές συμβολοσειρών για να χειριστείτε κάθε λέξη ξεχωριστά. Εκτυπώστε τις μεταβλητές για να δείτε το περιεχόμενό τους. Το fscanf () χρησιμοποιείται κυρίως για εξαγωγή και ανάλυση δεδομένων από ένα αρχείο.
  3. Ανοίξτε ξανά το αρχείο για να επαναφέρετε το αρχείο δείκτη ώστε να δείχνει στην αρχή του αρχείου. Διαβάστε τα δεδομένα και εκτυπώστε τα από τον χαρακτήρα του αρχείου ανά χαρακτήρα χρησιμοποιώντας τη συνάρτηση getc () μέχρι να εμφανιστεί η δήλωση EOF
  4. Αφού εκτελέσαμε ένα αρχείο λειτουργίας ανάγνωσης χρησιμοποιώντας διαφορετικές παραλλαγές, κλείσαμε ξανά το αρχείο χρησιμοποιώντας τη συνάρτηση fclose.

Διαδραστικό αρχείο Ανάγνωση και εγγραφή με getc και putc

Αυτές είναι οι απλούστερες λειτουργίες αρχείων. Το Getc σημαίνει χαρακτήρα get και putc σημαίνει put χαρακτήρα. Αυτές οι δύο λειτουργίες χρησιμοποιούνται για να χειρίζονται μόνο έναν χαρακτήρα κάθε φορά.

Το ακόλουθο πρόγραμμα δείχνει τις λειτουργίες χειρισμού αρχείων στον προγραμματισμό «C»:

#include int main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}

Παραγωγή:

  1. Στο παραπάνω πρόγραμμα δημιουργήσαμε και ανοίξαμε ένα αρχείο που ονομάζεται επίδειξη σε λειτουργία εγγραφής.
  2. Αφού εκτελεστεί μια λειτουργία εγγραφής, τότε το αρχείο κλείνει χρησιμοποιώντας τη συνάρτηση fclose.
  3. Ανοίξαμε ξανά ένα αρχείο που περιέχει τώρα δεδομένα σε λειτουργία ανάγνωσης. Λίγος βρόχος θα εκτελεστεί έως ότου βρεθεί το eof. Μόλις βρεθεί το τέλος του αρχείου, η λειτουργία θα τερματιστεί και τα δεδομένα θα εμφανίζονται χρησιμοποιώντας τη λειτουργία printf.
  4. Μετά την εκτέλεση μιας λειτουργίας ανάγνωσης, το αρχείο κλείνει ξανά χρησιμοποιώντας τη λειτουργία fclose.

Περίληψη

  • Ένα αρχείο είναι ένας χώρος στη μνήμη όπου αποθηκεύονται τα δεδομένα.
  • Ο προγραμματισμός «C» παρέχει διάφορες λειτουργίες για την αντιμετώπιση ενός αρχείου.
  • Ένας μηχανισμός χειρισμού με τα αρχεία ονομάζεται διαχείριση αρχείων.
  • Πρέπει να ανοίξετε ένα αρχείο πριν εκτελέσετε εργασίες σε αυτό.
  • Ένα αρχείο μπορεί να ανοίξει σε λειτουργία ανάγνωσης, εγγραφής ή προσάρτησης.
  • Οι λειτουργίες Getc και putc χρησιμοποιούνται για την ανάγνωση και τη σύνταξη ενός μόνο χαρακτήρα.
  • Η συνάρτηση fscanf () επιτρέπει την ανάγνωση και ανάλυση δεδομένων από ένα αρχείο
  • Μπορούμε να διαβάσουμε (χρησιμοποιώντας τη λειτουργία getc ) ένα ολόκληρο αρχείο με βρόχο για να καλύψουμε όλο το αρχείο μέχρι να συναντηθεί το EOF
  • Μπορούμε να γράψουμε σε ένα αρχείο αφού δημιουργήσουμε το όνομά του, χρησιμοποιώντας τη συνάρτηση fprintf () και πρέπει να έχει το χαρακτήρα γραμμής στο τέλος του κειμένου συμβολοσειράς.