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

fgets

من cppreference.com
< c‏ | io

معرفة في ملف <stdio.h>
char *fgets( char          *str, int count, FILE          *stream );
(حتى C99)
char *fgets( char *restrict str, int count, FILE *restrict stream );
(منذ C99)

تقرأ مالا يزيد عن count - 1 من الحروف من تيار ملف وتخزن المقروء في ‎str‎. مصفوفة الحروف الناتجة دائما تكون منتهية بـ ‎'\0'‎. تتوقف القراءة إذا تم الوصول إلى نهاية الملف أو تم العثور على علامة السطر الجديد. في الحالة الأخيرة يتم ادراج السطر الجديد ضمن محتوى ‎str‎.

محتويات

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

str - مصفوفة حرف يتم تخزين المقروء فيها
count - مساحة ‎str‎
stream - تيار الملف المراد قراءته

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

‎str‎ حالة النجاح, NULL‎ عند الفشل.

إذا كان سبب الفشل الوصول إلى نهاية الملف, يمكن الكشف عن ذلك باستخدام feof()‎ على ‎stream‎. لو كان هنا لك سبب آخر يمكن الكشف باستخدام ferror()‎.

[تعديل] مثال

fgets مع التأكد من عدم حدوث أخطاء

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    FILE* tmpf = tmpfile();
    fputs("Alan Turing\n", tmpf);
    fputs("John von Neumann\n", tmpf);
    fputs("Alonzo Church\n", tmpf);
 
    rewind(tmpf);
 
    char buf[8];
    while (fgets(buf, sizeof buf, tmpf) != NULL)
          printf("\"%s\"\n", buf);
 
    /* Test reason for reaching NULL. */
    if (feof(tmpf))          /* if failure caused by end-of-file condition */
       puts("End of file reached");
    else if (ferror(tmpf))   /* if failure caused by some other error      */
         {
            perror("fgets()");
            fprintf(stderr,"fgets() failed in file %s at line # %d\n", __FILE__,__LINE__-9);
            exit(EXIT_FAILURE);
         }
 
    return EXIT_SUCCESS;
}

الخرج:

"Alan Tu"
"ring
"
"John vo"
"n Neuma"
"nn
"
"Alonzo "
"Church
"
End of file reached

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

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