English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
وظيفة مكتبة C int setvbuf(FILE *stream, char *buffer, int mode, size_t size) تحديد كيفية تخزين تدفق الاستream.
إعلان وظيفة setvbuf()
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
نمط | وصف |
---|---|
_IOFBF | تخزين كامل: للإخراج، يتم كتابة البيانات عند ملء التخزين مرة واحدة. للإدخال، يتم ملء التخزين عند طلب الإدخال وكونه فارغًا، حتى يظهر الخط الفاصل التالي. |
_IOLBF | تخزين سطر: للإخراج، يتم كتابة البيانات عند وجود خط فاصل أو عندما يتم ملء التخزين، اعتمادًا على الحالة. |
_IONBF | بدون تخزين: لا يستخدم التخزين. يتم كتابة كل عملية I/O على الفور. |
إذا كانت النتيجة ناجحة، فإن الوظيفة تعود 0، وإلا تعود قيمة غير صفر.
المثال التالي يوضح استخدام وظيفة setvbuf().
#include <stdio.h> int main() { char buff[1024]; memset( buff, '\0', sizeof( buff )); fprintf(stdout, "تم تمكين التخزين الكامل\n"); setvbuf(stdout, buff, _IOFBF, 1024); fprintf(stdout, "هذه هي oldtoolbag.com\n"); fprintf(stdout, "سيتم حفظ هذا الخروج في buff\n"); fflush( stdout ); fprintf(stdout, "هذا سيحدث أثناء البرمجة\n"); fprintf(stdout, "تسقط بعد خمسة ثواني\n"); sleep(5); return(0); }
لنقوم بترميز وتشغيل البرنامج أعلاه، مما ينتج النتيجة التالية. هنا، يخزن البرنامج输出发خرت buff،حتى أول استدعاء fflush() ثم بدء التخزين، ثم الاستيقاظ بعد خمس ثوان. سيتم إرسال الناتج المتبقي إلى STDOUT قبل انتهاء البرنامج.
تمكين التخزين الكامل هذا هو oldtoolbag.com سيتم حفظ الناتج في buff هذا سيحدث أثناء البرمجة الاستيقاظ بعد خمس ثوان