المتغيرات
فضاءات التسمية
أفعال

fread

من cppreference.com
< c‏ | io

معرفة في ملف <stdio.h>
size_t fread( void          *buffer, size_t size, size_t count,
              FILE          *stream );
(حتى C99)
size_t fread( void *restrict buffer, size_t size, size_t count,
              FILE *restrict stream );
(منذ C99)

تقرأ كحد أقصى عدد ‎count‎ من الكائنات من تيار الإدخال المعطى ‎stream‎ وتخزنها في المصفوفة ‎buffer‎ كما لو تم استدعاء fgetc‎ عدد ‎size‎ من المرات لكل كائن مع تخزين الناتج في مصفوفة عناصرها unsigned char. يتم تزويد علامة موضع الملف بعدد الحروف المقروءة.

عند حدوث خطأ, تكون علامة موضع الملف غير محدد القيمة. في حالة قراءة جزء من عنصر تكون قيمته غير محددة.

محتويات

[تعديل] المعطيات

buffer - مؤشر إلى مصفوفة سيتم تخزين الكائنات المقروءة فيه
size - حجم كل كائن بالبايت
count - عدد الكائنات التي سيتم قراءتها
stream - تيار البيانات المراد القراءة منه

[تعديل] القيمة المُرجعة

عدد الكائنات التي نجحت عملية قراءتها. ربما تكون القيمة أقل من ‎count‎ في حالة حدث خطأ أو انتهاء الملف قبل الأوان.

إذا كانت ‎size‎ أو ‎count‎ بصفر, تكون المُرجعة صفر ولا يتم إجراء أي عمليات.

[تعديل] مثال

#include <stdio.h>
 
enum { SIZE = 5 };
int main(void)
{
    double a[SIZE] = {1.,2.,3.,4.,5.};
    FILE *fp = fopen("test.bin", "wb"); // must use binary mode
    fwrite(a, sizeof *a, SIZE, fp); // writes an array of doubles
    fclose(fp);
 
    double b[SIZE];
    fp = fopen("test.bin","rb");
    size_t ret_code = fread(b, sizeof *b, SIZE, fp); // reads an array of doubles
    if(ret_code == SIZE) {
        puts("Array read successfully, contents: ");
        for(int n = 0; n < SIZE; ++n) printf("%f ", b[n]);
        putchar('\n');
    } else { // error handling
       if (feof(fp))
          printf("Error reading test.bin: unexpected end of file\n");
       else if (ferror(fp)) {
           perror("Error reading test.bin");
       }
    }
}

الخرج:

1.000000 2.000000 3.000000 4.000000 5.000000

[تعديل] أنظر أيضا

تقرأ مدخل منسق من stdin‎ أو تيار ملف (FILE*‎) أو مصفوفة
(دالة) [edit]
تقرأ سلسلة من الحروف من تيار ملف
(دالة) [edit]
تكتب في ملف
(دالة) [edit]