Latest web development tutorials

الوثيقة C محو الأمية

الفصل السابق شرحنا أجهزة الإدخال والإخراج معالجة لغة C القياسية. في هذا الفصل سوف نقدم مبرمج C كيفية إنشاء ومفتوحة، وثيقة، والنص أو الملفات الثنائية.

ملف، سواء كان ذلك النص أو البيانات الثنائية، هي تمثيلية من سلسلة من البايتات. وظيفة لغة C يوفر ليس فقط الحصول على أعلى مستوى، ولكن أيضا يوفر الكامنة (OS) ودعا إلى معالجة الملفات المخزنة على الجهاز. وهذا الفصل شرح أهمية الدعوة التي وجهها مدير الملفات.

فتح الملف

يمكنك استخدام وظيفةالدالة fopen () لإنشاء مستند جديد أو فتح ملف موجود، فإن دعوة تهيئة كائن من نوع الملف،نوعالملفيحتوي على جميع المعلومات اللازمة للسيطرة على تدفق. هنا هو النموذج الأولي من هذه الدعوة:

FILE *fopen( const char * filename, const char * mode );

هنا، اسم الملف هو سلسلة تستخدم لتسمية وضع وصول قيمة وضعالملف يمكن أن تكون واحدة من القيم التالية:

模式描述
r打开一个已有的文本文件,允许读取文件。
w打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。
a打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+打开一个文本文件,允许读写文件。
w+打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

إذا كانت العملية عبارة عن ملف ثنائي، تحتاج إلى استخدام وضع الوصول وضع الوصول التالية لاستبدال ما سبق:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

إغلاق الملف

.

لإغلاق الملف، استخدم fclose () وظيفة. وظيفة النموذج هو كما يلي:

 int fclose( FILE *fp );

في حال نجاحها، إغلاقالملف، وظيفة fclose () بإرجاع صفر، يحدث خطأ عند إغلاق الملف، تقوم الدالة بإرجاع EOF.هذه هي وظيفة في واقع الأمر، فإن مسح البيانات في المخزن المؤقت، إغلاق الملف، وإطلاق كافة الذاكرة للملف. EOF هو ثابت المحددة فيstdio.h ملف رأس.

يوفر C مكتبة القياسية مجموعة متنوعة من الوظائف للضغط على حرف أو في شكل سلسلة ذات طول ثابت لقراءة وكتابة الملفات.

الكتابة إلى ملف

هنا هي أحرف الكتابة إلى دفق من وظيفة أبسط:

int fputc( int c, FILE *fp );

وظيفةfputc () يكتب حرف c لقيمة النقاط المعلمة FP إلى دفق إخراج.إذا كانت الكتابة ناجحا، فإنه يعود الطابع مكتوبة، في حالة حدوث خطأ، فإنها ترجعEOF.يمكنك استخدام الوظائف التالية إلى سلسلة منتهية المراد كتابتها إلى تيار:

int fputs( const char *s, FILE *fp );

fputs () وظيفة يكتب الصورةسلسلة لFP نقطة إلى دفق إخراج. إذا كانت الكتابة ناجحا، فإنه سيعود قيمة غير سلبية في حالة حدوث خطأ، فإنها ترجعEOF.يمكنك أيضا استخدامfprintf الباحث (FILE * FP، CONST شار * الشكل، ...) وظيفة لكتابة سلسلة المراد كتابتها إلى ملف.جرب الأمثلة التالية:

ملاحظة: تأكد المتاحة لديك الدليل / تمة،حالة عدم وجود هذا الدليل، ستحتاج إلى إنشاء دليل على جهاز الكمبيوتر الخاص بك.

#include <stdio.h>

main()
{
   FILE *fp;

   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذ، فإنه سيتم إنشاؤها في الدليل / تمة، وهيTEST.TXT ملف جديد،واستخدام اثنين من وظائف مختلفة كتب سطرين. دعونا قراءة الملف.

قراءة الملف

هنا هو أبسط وظيفة لقراءة حرف واحد من ملف:

int fgetc( FILE * fp );

fgetc () يقرأ وظيفة حرف من ملف الإدخال وأشار من قبل تنظيم الأسرة.قيمة الإرجاع هو قراءة شخصية، في حالة حدوث خطأ إرجاعEOF.الدالة التالية يسمح لك لقراءة سلسلة من تيار:

char *fgets( char *buf, int n, FILE *fp );

fgets وظيفة ()يقرأ ن من دفق الإدخال أشار إليه FP - على حرف واحد. وسوف قراءة السلسلة نسخها إلىBUF العازلة، وأخيرا إلحاق حرف فارغةإنهاء السلسلة.

إذا كانت وظيفة قبل قراءة الحرف الأخير واجه حرف السطر الجديد '\ ن' في نهاية الملف أو EOF، إلا أن العودة إلى قراءة الأحرف، بما في ذلك السطر. يمكنك أيضا استخدامكثافة fscanf (FILE * FP، CONST شار * الشكل، ...) وظيفة لقراءة سلسلة من ملف، ولكن في مواجهة الطابع الفضاء الأول، فإنه سيتم التوقف عن القراءة.

#include <stdio.h>

main()
{
   FILE *fp;
   char buff[255];

   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1 : %s\n", buff );

   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);

}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وسوف قراءة الملفات التي تم إنشاؤها على جزء، وتنتج النتائج التالية:

1 : This
2: is testing for fprintf...

3: This is testing for fputs...

أولا، طريقة fscanf () قراءة فقط هذا،لأنه يصادف الفضاء في ظهره. بعد ذلك، استدعاءfgets () لقراءة بقية، حتى نهاية السطر.وأخيرا، ندعوfgets () قراءة في مجملها السطر الثاني.

الثنائية وظائف I / O

وظائف التاليين للمدخلات والمخرجات ثنائية:

size_t fread(void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);
              
size_t fwrite(const void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);

وتستخدم هاتين الوظيفتين القراءة والكتابة كتلة الذاكرة - عادة صفيف أو بنية.