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

fopen

من cppreference.com
< c‏ | io

معرفة في ملف <stdio.h>
FILE *fopen( const char          *filename, const char          *mode );
(حتى C99)
FILE *fopen( const char *restrict filename, const char *restrict mode );
(منذ C99)

تفتح الملف المقصود بـ ‎filename‎ وتُرجع FILE*‎ خاص بهذا الملف. يتم التحكم في نوعية استخدام الملف عن طريق ‎mode‎.

محتويات

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

filename - اسم الملف المراد فتحه
mode - سلسلة حروف للدلالة على نوعية الإستخدام
File access
mode string
المعنى الشرح السلوك حال
وجود الملف
السلوك حال
عدم وجود الملف
‎"r"‎ القراءة (read) يتم فتح الملف للقراءة يتم البدء في القراءة من أول الملف تفشل عملية الفتح
‎"w"‎ الكتابة (write) يتم إنشاء ملف جديد للكتابة حذف المحتوى القديم إنشاء ملف جديد
‎"a"‎ تعقيب (append) الكتابة في آخر الملف الكتابة في الآخر إنشاء ملف جديد
‎"r+‎"‎ القراءة المتوسعة فتح الملف للقراءة والكتابة القراءة تتم من البداية تفشل عملية الفتح
‎"w+‎"‎ الكتابة المتوسعة إنشاء ملف للكتابة والقراءة حذف المحتوى إنشاء ملف جديد
‎"a+‎"‎ التعقيب المتوسع فتح ملف للقراءة والكتابة الكتابة في نهاية الملف إنشاء ملف جديد
يمكن أيضا استخدام علامة ‎"b"‎ لفتح الملف في الوضع الثنائي (Binary mode). هذه العلامة تعني أنه لا يتم اجراء أي تحويلات لعلامة السطر الجديد ‎'\n'‎. الويندوز من أشهر الأنظمة التي تشترط هذه التحويلات في الوضع العادي/النصي (Text mode). على الغالبية العظمى من الأنظمة الأخرى لا يوجد فرق بين الوضع الثنائي والنصي.
في حالة التعقيب تتم الكتابة دائما في اخر الملف بغض النظر عن مكان مؤشر الموضع الخاص بالملف.
يمكن إضافة علامة ‎"x"‎ لكلا من ‎"w"‎ و ‎"w+‎"‎. في حالة وجودها تفشل عملية الفتح في حالة وجود الملف وذلك بدلا من حذف المحتوى الأصلي للكتابة مكانه. (C11)

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

في حالة النجاح, ترجع مؤشر على كائن يتحكم في تيار بيانات للملف المفتوح. في حالة أن ‎filename‎ إسم جهاز تفاعلي يكون التيار unbuffered. فيما عدا ذلك يكون buffered.

في حالة الخطأ, ترجع قيمة مكافئة لـ NULL‎. ‏ POSIX يتطلب أن يتم وضع قيمة تدل على الخطأ في errno‎.


[تعديل] ملحوظات

النسق المطلوب لـ ‎filename‎ تحدده بيئة التشغيل ولا يشترط أن تعبر عن ملف. مثلا يمكن أن تشير إلى كونسل أو أي جهاز آخر متاح عن طريق واجهة الملفات. على الأنظمة الداعمة لذلك ‎filename‎ يمكن أن تكون عنوان ملف مطلق أو نسبي.

[تعديل] مثال

فتح ملف لكتابة بعض البيانات مع التأكد من عدم حدوث خطأ.

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    FILE *fp = fopen("data.txt","w");
    if (fp == NULL)
    {
       perror("fopen()");
       fprintf(stderr,"fopen() failed in file %s at line # %d\n", __FILE__,__LINE__-4);
       return EXIT_FAILURE;
    }
 
    /* Normal processing continues here. */
 
    fclose(fp);
    return EXIT_SUCCESS;
}


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

تغلق ملف
(دالة) [edit]
توفق (sync) بين تيار البيانات والملف الحقيقي
(دالة) [edit]
تفتح ملف داخل تيار بيانات موجود مسبقا
(دالة) [edit]