ពិពណ៌នាអំពីរបៀបដែលអ្នកសរសេរកម្មវិធី C បង្កើត បើក និងបិទឯកសារអត្ថបទ ឬឯកសារគោលពីរ។
ឯកសារ មានន័យថាជាស៊េរីនៃបៃ មិនថាវាជាឯកសារអត្ថបទ ឬឯកសារគោលពីរ ភាសា C មិនត្រឹមតែផ្តល់នូវការចូលប្រើមុខងារកម្រិតកំពូលប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងផ្តល់នូវការហៅ (OS) មូលដ្ឋានដើម្បីដំណើរការឯកសារនៅលើឧបករណ៍ផ្ទុក។ . ជំពូកនេះនឹងពន្យល់អំពីការហៅទូរស័ព្ទសំខាន់ៗក្នុងការគ្រប់គ្រងឯកសារ។
ឯកសារបើកចំហ
ជាធម្មតាដោយប្រើមុខងារ fopen () ដើម្បីបង្កើតឯកសារថ្មី ឬបើកឯកសារដែលមានស្រាប់ ការហៅនេះចាប់ផ្តើមវត្ថុនៃប្រភេទ FILE ដែលមានព័ត៌មានចាំបាច់ទាំងអស់ដើម្បីគ្រប់គ្រងលំហូរ។ នេះជាគំរូដើមនៃការហៅមុខងារនេះ៖
ឯកសារ * fopen ( const char * ឈ្មោះឯកសារ , const char * របៀប );
នៅទីនេះឈ្មោះឯកសារគឺជាខ្សែអក្សរសម្រាប់ដាក់ឈ្មោះឯកសារ តម្លៃនៃរបៀបចូលប្រើអាចជាតម្លៃមួយក្នុងចំណោមតម្លៃខាងក្រោម៖
លំនាំ | ការពិពណ៌នា |
r | បើកឯកសារអត្ថបទដែលមានស្រាប់ដែលអនុញ្ញាតឱ្យវាអាន។ |
w | បើកឯកសារអត្ថបទដែលអនុញ្ញាតឱ្យសរសេរទៅឯកសារ។ ប្រសិនបើឯកសារមិនមានទេ ឯកសារថ្មីមួយត្រូវបានបង្កើត។ នៅទីនេះ កម្មវិធីរបស់អ្នកសរសេរមាតិកាពីដើមឯកសារ។ ប្រសិនបើឯកសារមាន វានឹងកាត់ឱ្យខ្លីទៅសូន្យ ហើយសរសេរឡើងវិញ។ |
a | បើកឯកសារអត្ថបទ ហើយសរសេរទៅឯកសារក្នុងទម្រង់បន្ថែម។ ប្រសិនបើឯកសារមិនមានទេ ឯកសារថ្មីមួយត្រូវបានបង្កើត។ នៅទីនេះ កម្មវិធីរបស់អ្នកបន្ថែមមាតិកាទៅឯកសារដែលអ្នកមានរួចហើយ។ |
r+ | បើកឯកសារអត្ថបទដែលអនុញ្ញាតឱ្យអ្នកអាន និងសរសេរឯកសារ។ |
w+ | បើកឯកសារអត្ថបទដែលអនុញ្ញាតឱ្យអ្នកអាន និងសរសេរឯកសារ។ ប្រសិនបើឯកសារមានរួចហើយ ឯកសារត្រូវបានកាត់ឱ្យខ្លីទៅសូន្យ ហើយប្រសិនបើឯកសារមិនមានទេ ឯកសារថ្មីមួយត្រូវបានបង្កើត។ |
a+ | បើកឯកសារអត្ថបទដែលអនុញ្ញាតឱ្យអ្នកអាន និងសរសេរឯកសារ។ ប្រសិនបើឯកសារមិនមានទេ ឯកសារថ្មីមួយត្រូវបានបង្កើត។ ការអានចាប់ផ្តើមនៅដើមឯកសារ ហើយការសរសេរគឺនៅក្នុងរបៀបបន្ថែមប៉ុណ្ណោះ។ |
ប្រសិនបើឯកសារគោលពីរដែលបានដំណើរការ សូមប្រើរបៀបចូលប្រើខាងក្រោមដើម្បីជំនួសឯកសារខាងលើ៖
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
ឯកសារបិទ
ដើម្បីបិទឯកសារ សូមប្រើមុខងារ fclose()។ គំរូនៃមុខងារមានដូចខាងក្រោម៖
int fclose ( ឯកសារ * 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 () សរសេរខ្សែអក្សរ s ទៅស្ទ្រីមលទ្ធផលដែល fp ចង្អុលទៅ។ ប្រសិនបើការសរសេរជោគជ័យ វាត្រឡប់តម្លៃមិនអវិជ្ជមាន និង EOF ប្រសិនបើកំហុសកើតឡើង។ អ្នកក៏អាចប្រើមុខងាររបស់ int fprintf (FILE * fp, const char * format, ... ) សរសេរខ្សែអក្សរទៅឯកសារ។ សាកល្បងឧទាហរណ៍ខាងក្រោម៖
ចំណាំ៖ ត្រូវប្រាកដថាអ្នកមានថត tmp ដែលអាចប្រើបាន ហើយប្រសិនបើវាមិនមានទេ អ្នកត្រូវបង្កើតវានៅលើកុំព្យូទ័ររបស់អ្នកជាមុនសិន។
/ tmp ជាធម្មតាជាថតបណ្តោះអាសន្ននៅលើប្រព័ន្ធលីនុច។ ប្រសិនបើអ្នកដំណើរការលើប្រព័ន្ធវីនដូ អ្នកត្រូវកែប្រែវាទៅជាថតដែលមានស្រាប់នៅក្នុងបរិស្ថានមូលដ្ឋាន ដូចជា៖ C:\tmp, D:\tmp ។ល។
ឧទាហរណ៍រស់នៅ
# រួមបញ្ចូល
នៅពេលដែលកូដខាងលើត្រូវបានចងក្រង និងប្រតិបត្តិ វាបង្កើតឯកសារថ្មី test.txt នៅក្នុងថត / tmp ។ ហើយសរសេរទៅបន្ទាត់ពីរដោយប្រើមុខងារពីរផ្សេងគ្នា។ តោះអានឯកសារនេះបន្ត។
អានឯកសារ
ខាងក្រោមនេះគឺជាមុខងារសាមញ្ញបំផុតក្នុងការអានតួអក្សរតែមួយពីឯកសារ៖
int fgetc ( ឯកសារ * fp );
មុខងារ fgetc () អានតួអក្សរមួយពីឯកសារបញ្ចូលដែលចំណុច fp ។ តម្លៃត្រឡប់គឺជាតួអក្សរដែលបានអាន និង EOF ប្រសិនបើកំហុសកើតឡើង។ មុខងារខាងក្រោមអនុញ្ញាតឱ្យអ្នកអានខ្សែអក្សរពីស្ទ្រីម៖
char * fgets ( char * buf , int n , FILE * fp );
មុខងារ fgets () អានតួអក្សរ n-1 ពីស្ទ្រីមបញ្ចូលដែលដឹកនាំដោយ fp ។ វាចម្លងខ្សែអក្សរដែលបានអានទៅ buffer buf ហើយបន្ថែមតួអក្សរ null នៅខាងចុង ដើម្បីបញ្ចប់ខ្សែអក្សរ។
ប្រសិនបើមុខងារនេះជួបប្រទះតួអក្សរបន្ទាត់ដែលខូច '\n' ឬ EOF នៃចុងបញ្ចប់នៃឯកសារ មុនពេលអានតួអក្សរចុងក្រោយ នោះគ្រាន់តែត្រលប់ទៅតួអក្សរដែលបានអាន រួមទាំងការបំបែកបន្ទាត់។ អ្នកក៏អាចប្រើមុខងារ int fscanf (FILE * fp, const char * format,...) ដើម្បីអានខ្សែអក្សរពីឯកសារ ប៉ុន្តែវាឈប់អាននៅពេលជួបចន្លោះដំបូង និងការបំបែកបន្ទាត់។
ឧទាហរណ៍រស់នៅ
# រួមបញ្ចូល
នៅពេលដែលកូដខាងលើត្រូវបានចងក្រង និងប្រតិបត្តិ វាអានឯកសារដែលបានបង្កើតនៅក្នុងផ្នែកមុន ដោយបង្កើតលទ្ធផលដូចខាងក្រោម៖
1: នេះ 2: កំពុងធ្វើតេស្តសម្រាប់ fprintf...
3: នេះគឺជាការសាកល្បងសម្រាប់ fputs...
ដំបូង វិធីសាស្ត្រ fscanf() អានតែ This .ព្រោះវាជួបចន្លោះនៅខាងក្រោយ។ ទីពីរ ហៅ Functon fgets () ដើម្បីអានផ្នែកដែលនៅសល់រហូតដល់ចុងបញ្ចប់នៃបន្ទាត់។ ជាចុងក្រោយ សូមហៅទៅ fgets () ដើម្បីអានជួរទីពីរទាំងស្រុង។
មុខងារ Binary I/O
អនុគមន៍ពីរខាងក្រោមត្រូវបានប្រើសម្រាប់ការបញ្ចូលនិងលទ្ធផលគោលពីរ៖
size_t fread (ចាត់ទុកជាមោឃៈ *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 );
មុខងារទាំងពីរត្រូវបានអាន និងសរសេរសម្រាប់ប្លុកផ្ទុក - ជាធម្មតាអារេ ឬរចនាសម្ព័ន្ធ។
ខាងលើអំពីការអាន និងការសរសេរឯកសារ C ជាកម្មសិទ្ធិរបស់ HDV Phoelectron Technology Ltd. ដែលជាប្រតិបត្តិការបច្ចេកទេសផ្នែកទន់។ និងក្រុមហ៊ុនសម្រាប់ឧបករណ៍ទាក់ទងនឹងបណ្តាញ (ដូចជា៖ ACONU/ ទំនាក់ទំនងONU/ ឆ្លាតវៃONU/ ជាតិសរសៃONUល) បានប្រមូលផ្តុំក្រុមកម្មវិធីដ៏មានអានុភាព សម្រាប់អតិថិជនគ្រប់រូប ប្ដូរតាមបំណងនូវតម្រូវការផ្តាច់មុខដែលត្រូវការវា ថែមទាំងអនុញ្ញាតឱ្យផលិតផលរបស់យើងកាន់តែឆ្លាតវៃ និងកម្រិតខ្ពស់។