Η συνάρτηση setvbuf () στο C ++ χρησιμοποιείται για να αλλάξει ή να καθορίσει τη λειτουργία προσωρινής αποθήκευσης και το μέγεθος του buffer.
πρωτότυπο setvbuf ()
int setvbuf (FILE * stream, char * buffer, int mode, size_t size);
Η setvbuf()
συνάρτηση αλλάζει τη λειτουργία προσωρινής αποθήκευσης της δεδομένης ροής αρχείων στην τιμή της λειτουργίας.
Εάν το buffer δεν είναι μηδενικό, το μέγεθος του buffer είναι μέγεθος, διαφορετικά η λειτουργία εκχωρεί αυτόματα ένα buffer (με βάση την τιμή του μεγέθους).
Ορίζεται στο αρχείο κεφαλίδας.
setvbuf () Παράμετροι
- stream: Μια ροή αρχείων.
- buffer: Δείκτης στο buffer για χρήση από τη ροή.
- mode: Λειτουργία Buffering. Οι τύποι λειτουργιών προσωρινής αποθήκευσης είναι:
- _IOFBF: πλήρης buffering
- _IOLBF: buffering γραμμής
- _IONBF: χωρίς buffering
- size: Το μέγεθος του buffer σε byte.
setvbuf () Τιμή επιστροφής
Η setvbuf()
συνάρτηση επιστρέφει μηδέν στην επιτυχία και μη μηδέν στην αποτυχία.
Παράδειγμα: Πώς λειτουργεί η συνάρτηση setvbuf ()
#include #include #define SIZE 1024 using namespace std; int main() ( char buffer(SIZE) = "… "; char str() = "This is first lineThis is second line"; FILE *fp = fopen("test.txt","wb+"); /* no buffering, buffer remains unchanged */ setvbuf(fp,buffer,_IONBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* line buffering, only a single line is buffered */ setvbuf(fp,buffer,_IOLBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* full buffering, all the contents are buffered */ setvbuf(fp,buffer,_IOFBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; fclose(fp); return 0; )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
… Αυτή είναι η δεύτερη γραμμή Αυτή είναι η πρώτη γραμμή Αυτή είναι η δεύτερη γραμμή