C ++ setbuf () - Βασική βιβλιοθήκη C ++

Η συνάρτηση setbuf () στο C ++ ορίζει το εσωτερικό buffer που θα χρησιμοποιείται για λειτουργίες I / O από μια ροή.

πρωτότυπο setbuf ()

 void setbuf (FILE * stream, char * buffer).

Εάν το buffer δεν είναι μηδενικό, ισοδυναμεί με την κλήση του setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Εάν το buffer είναι μηδενικό, ισοδυναμεί με κλήση του setvbuf (stream, NULL, _IONBF, 0). Σε αυτήν την περίπτωση το buffering είναι απενεργοποιημένο.

Ορίζεται στο αρχείο κεφαλίδας.

setbuf () Παράμετροι

  • stream: Μια ροή αρχείων.
  • buffer: Ένας δείκτης σε ένα buffer που μπορεί να είναι μηδενικός ή όχι. Εάν είναι μηδενική, η προσωρινή αποθήκευση είναι απενεργοποιημένη, διαφορετικά θα πρέπει τουλάχιστον των BUFSIZ byte.

setbuf () Τιμή επιστροφής

Κανένας

Τα παρακάτω 2 παραδείγματα απεικονίζουν τη χρήση της συνάρτησης setbuf (). Και τα δύο αυτά προγράμματα χρησιμοποιούν τη λειτουργία αρχείων. Στο πρώτο παράδειγμα, το buffer ρυθμίζεται χρησιμοποιώντας το setbuf () για την αποθήκευση των περιεχομένων του αρχείου εσωτερικά.

Στο επόμενο παράδειγμα, η δήλωση setbuf(fp, NULL)απενεργοποιεί την προσωρινή αποθήκευση. Έτσι, για να διαβάσετε το περιεχόμενο του αρχείου, χρησιμοποιείται το fread ().

Παράδειγμα 1: Πώς λειτουργεί η συνάρτηση setbuf ()

 #include #include using namespace std; int main () ( char str() = "Buffered Stream"; char buffer(BUFSIZ); FILE *fp; fp=fopen ("test.txt","wb"); setbuf(fp,buffer); fwrite(str, sizeof(str), 1, fp); fflush(fp); fclose(fp); cout << buffer; return 0; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Ροή Buffered

Παράδειγμα 2: λειτουργία setbuf () με απενεργοποίηση της προσωρινής αποθήκευσης

 #include #include using namespace std; int main () ( char str() = "Unbuffered Stream"; char strFromFile(20); FILE *fp; fp=fopen ("test.txt","wb+"); setbuf(fp,NULL); fwrite(str, sizeof(str), 1, fp); fflush(fp); /* We need to rewind the file pointer and read the file because the data from test.txt isn't saved in any buffer */ rewind(fp); fread(strFromFile, sizeof(strFromFile), 1, fp); fclose(fp); cout << strFromFile; return 0; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Μη συνεχόμενη ροή

ενδιαφέροντα άρθρα...