.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2001, John Levon .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getline 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getline, getdelim \- إدخال سلسلة محارف محددة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBssize_t getline(char **restrict \fP\fIlineptr\fP\fB, size_t *restrict \fP\fIn\fP\fB,\fP \fB FILE *restrict \fP\fIstream\fP\fB);\fP \fBssize_t getdelim(char **restrict \fP\fIlineptr\fP\fB, size_t *restrict \fP\fIn\fP\fB,\fP \fB int \fP\fIdelim\fP\fB, FILE *restrict \fP\fIstream\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBgetline\fP(), \fBgetdelim\fP(): .nf منذ glibc 2.10: _POSIX_C_SOURCE >= 200809L قبل glibc 2.10: _GNU_SOURCE .fi .SH الوصف \fBgetline\fP() تقرأ سطرًا كاملاً من \fIstream\fP، وتخزن عنوان المخزن المؤقت الذي يحتوي النص في \fI*lineptr\fP. يُنهى المخزن المؤقت بحرف فارغ ويتضمن حرف السطر الجديد، إذا وُجد. .P إذا ضُبط \fI*lineptr\fP على NULL قبل الاستدعاء، فستخصص \fBgetline\fP() مخزنًا مؤقتًا لتخزين السطر. يجب تحرير هذا المخزن المؤقت بواسطة برنامج المستخدم حتى لو فشلت \fBgetline\fP(). .P بدلاً من ذلك، قبل استدعاء \fBgetline\fP()، يمكن أن يحتوي \fI*lineptr\fP على مؤشر إلى مخزن مؤقت مخصص بواسطة \fBmalloc\fP(3) بحجم \fI*n\fP بايت. إذا لم يكن المخزن المؤقت كبيرًا بما يكفي لاستيعاب السطر، فتعيد \fBgetline\fP() تحجيمه باستخدام \fBrealloc\fP(3)، وتُحدّث \fI*lineptr\fP و \fI*n\fP حسب الضرورة. .P في كلتا الحالتين، عند استدعاء ناجح، يُحدّث \fI*lineptr\fP و \fI*n\fP ليعكسا عنوان المخزن المؤقت والحجم المخصص على التوالي. .P تعمل \fBgetdelim\fP() مثل \fBgetline\fP()، باستثناء أنه يمكن تحديد محدد سطر غير السطر الجديد كوسيطة \fIdelimiter\fP. كما هو الحال مع \fBgetline\fP()، لا يُضاف حرف المحدد إذا لم يكن موجودًا في الإدخال قبل الوصول إلى نهاية الملف. .SH "قيمة الإرجاع" عند النجاح، تُرجع \fBgetline\fP() و \fBgetdelim\fP() عدد المحارف المقروءة، بما في ذلك حرف المحدد، ولكن لا يشمل البايت الفارغ الختامي (\[aq]\[rs]0\[aq]). يمكن استخدام هذه القيمة للتعامل مع البايتات الفارغة المضمنة في السطر المقروء. .P عند نهاية الملف، تُرجع كلتا الدالتين \-1 مع تعيين مؤشر نهاية الملف لدفق الملف. عند الخطأ، تُرجع كلتا الدالتين \-1 مع تعيين مؤشر خطأ دفق الملف، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .P إذا ضُبط \fI*lineptr\fP على NULL قبل الاستدعاء، فيجب تحرير المخزن المؤقت بواسطة برنامج المستخدم حتى عند الفشل. .SH الأخطاء .TP \fBEINVAL\fP وسائط سيئة (\fIn\fP أو \fIlineptr\fP هو NULL، أو \fIstream\fP غير صالح). .TP \fBENOMEM\fP فشل تخصيص أو إعادة تخصيص المخزن المؤقت للسطر. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBgetline\fP(), \fBgetdelim\fP() T} سلامة الخيوط MT\-Safe .TE .SH المعايير POSIX.1\-2008. .SH التاريخ جنو، POSIX.1\-2008. .SH أمثلة .\" SRC BEGIN (getline.c) .EX #define _GNU_SOURCE #include #include \& int main(int argc, char *argv[]) { FILE *stream; char *line = NULL; size_t size = 0; ssize_t nread; \& if (argc != 2) { fprintf(stderr, "Usage: %s \[rs]n", argv[0]); exit(EXIT_FAILURE); } \& stream = fopen(argv[1], "r"); if (stream == NULL) { perror("fopen"); exit(EXIT_FAILURE); } \& while ((nread = getline(&line, &size, stream)) != \-1) { printf("Retrieved line of length %zd:\[rs]n", nread); fwrite(line, nread, 1, stdout); } \& free(line); fclose(stream); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBread\fP(2), \fBfgets\fP(3), \fBfopen\fP(3), \fBfread\fP(3), \fBscanf\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .