fread(3)

الاسم
fread, fwrite - إدخال/إخراج الدفق الثنائي

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <stdio.h>

size_t fread(size_t size, size_t n;
             void ptr[restrict size * n],
             size_t size, size_t n,
             FILE *restrict stream);
size_t fwrite(size_t size, size_t n;
             const void ptr[restrict size * n],
             size_t size, size_t n,
             FILE *restrict stream);

الوصف
الدالة fread() تقرأ n عنصرًا من البيانات، كل منها بطول size بايت، من الدفق المشار إليه بـ stream، وتخزنها في الموقع المعطى بـ ptr.

الدالة fwrite() تكتب n عنصرًا من البيانات، كل منها بطول size بايت، إلى الدفق المشار إليه بـ stream، وتستمدها من الموقع المعطى بـ ptr.

للحصول على نظائر غير مقفلة، انظر unlocked_stdio(3).

قيمة الإرجاع
عند النجاح، fread() و fwrite() تُرجعان عدد العناصر المقروءة أو المكتوبة. هذا العدد يساوي عدد البايتات المنقولة فقط عندما يكون size هو 1. إذا حدث خطأ، أو تم الوصول إلى نهاية الملف، تكون القيمة المُرجَعة عدد عناصر قصير (أو صفر).

مؤشر موضع الملف للدفق يُقدَّم بعدد البايتات التي تمت قراءتها أو كتابتها بنجاح.

fread() لا تفرق بين نهاية الملف والخطأ، ويجب على المستدعين استخدام feof(3) و ferror(3) لتحديد أيهما حدث.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
fread()، fwrite() | سلامة الخيوط | MT-Safe

المعايير
C11, POSIX.1-2008.

التاريخ
POSIX.1-2001، C89.

أمثلة
البرنامج أدناه يوضح استخدام fread() عن طريق تحليل الملف التنفيذي ELF /bin/sh في الوضع الثنائي وطباعة سحره وفئته:

    $ ./a.out;
    ELF magic: 0x7f454c46
    Class: 0x02

  مصدر البرنامج
    #include <stdcountof.h>
    #include <stdio.h>
    #include <stdlib.h>

    int
    main(void)
    {
        FILE           *fp;
        size_t         ret;
        unsigned char  buffer[4];

        fp = fopen("/bin/sh", "rb");
        if (!fp) {
            perror("fopen");
            return EXIT_FAILURE;
        }

        ret = fread(buffer, sizeof(*buffer), countof(buffer), fp);
        if (ret != countof(buffer)) {
            fprintf(stderr, "fread() failed: %zu\n", ret);
            exit(EXIT_FAILURE);
        }

        printf("ELF magic: %#04x%02x%02x%02x\n", buffer[0], buffer[1],
               buffer[2], buffer[3]);

        ret = fread(buffer, 1, 1, fp);
        if (ret != 1) {
            fprintf(stderr, "fread() failed: %zu\n", ret);
            exit(EXIT_FAILURE);
        }

        printf("Class: %#04x\n", buffer[0]);

        fclose(fp);

        exit(EXIT_SUCCESS);
    }

انظر أيضًا
read(2), write(2), feof(3), ferror(3), unlocked_stdio(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.