Scroll to navigation

fread(3) Library Functions Manual fread(3)

الاسم

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

المكتبة

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

موجز

#include <stdio.h>
size_t fread(void ptr[restrict .size * .nmemb],
             size_t size, size_t nmemb,
             FILE *restrict stream);
size_t fwrite(const void ptr[restrict .size * .nmemb],
             size_t size, size_t nmemb,
             FILE *restrict stream);

الوصف

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

الدالة fwrite() تكتب nmemb عنصرًا من البيانات، كل منها بطول 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 <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
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), ARRAY_SIZE(buffer), fp);
if (ret != ARRAY_SIZE(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 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

15 يونيو 2024 صفحات دليل لينكس 6.9.1