fgets
من cppreference.com
معرفة في ملف <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*) أو مصفوفة (دالة) | |
(حتى C11) |
تقرأ سلسلة من stdin بطريقة غير آمنة (دالة) |
تكتب سلسلة من الحروف إلى داخل تيار ملف. (دالة) | |
مقالة مرجع C++ عن fgets
|