ອະທິບາຍວິທີທີ່ນັກຂຽນໂປລແກລມ C ສ້າງ, ເປີດ, ແລະປິດໄຟລ໌ຂໍ້ຄວາມ, ຫຼືໄຟລ໌ໄບນາຣີ.
ໄຟລ໌, ຫມາຍເຖິງຊຸດຂອງ bytes, ບໍ່ວ່າຈະເປັນໄຟລ໌ຂໍ້ຄວາມຫຼືໄຟລ໌ສອງ, ພາສາ C, ບໍ່ພຽງແຕ່ສະຫນອງການເຂົ້າເຖິງຫນ້າທີ່ລະດັບເທິງ, ແຕ່ຍັງສະຫນອງການເອີ້ນ (OS) ພື້ນຖານເພື່ອປະມວນຜົນໄຟລ໌ໃນອຸປະກອນການເກັບຮັກສາ. . ບົດນີ້ຈະອະທິບາຍການໂທທີ່ສໍາຄັນໃນການຄຸ້ມຄອງເອກະສານ.
ເປີດໄຟລ໌
ປົກກະຕິແລ້ວການນໍາໃຊ້ຟັງຊັນ fopen () ເພື່ອສ້າງໄຟລ໌ໃຫມ່ຫຼືເປີດໄຟລ໌ທີ່ມີຢູ່ແລ້ວ, ການໂທນີ້ຈະເລີ່ມຕົ້ນວັດຖຸຂອງປະເພດ FILE ທີ່ມີຂໍ້ມູນທີ່ຈໍາເປັນທັງຫມົດເພື່ອຄວບຄຸມການໄຫຼ. ນີ້ແມ່ນຕົ້ນແບບຂອງການເອີ້ນຟັງຊັນນີ້:
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. ຟັງຊັນນີ້, ໃນຄວາມເປັນຈິງ, ເອົາຂໍ້ມູນອອກຈາກ buffer, ປິດໄຟລ໌, ແລະປ່ອຍຫນ່ວຍຄວາມຈໍາທັງຫມົດທີ່ໃຊ້ສໍາລັບໄຟລ໌ນັ້ນ. EOF ແມ່ນຄ່າຄົງທີ່ທີ່ກຳນົດໄວ້ໃນ header file stdio.h
ຫ້ອງສະຫມຸດມາດຕະຖານ C ສະຫນອງຫນ້າທີ່ຕ່າງໆເພື່ອອ່ານແລະຂຽນໄຟລ໌ໂດຍຕົວອັກສອນຫຼືເປັນສາຍທີ່ມີຄວາມຍາວຄົງທີ່.
ຂຽນໃສ່ໄຟລ໌
ນີ້ແມ່ນຟັງຊັນທີ່ງ່າຍທີ່ສຸດທີ່ຈະຂຽນຕົວອັກສອນໃສ່ກະແສ:
int fputc ( int c , FILE *fp );
ຟັງຊັນ fputc () ຂຽນຄ່າຕົວອັກສອນຂອງພາລາມິເຕີ c ເຂົ້າໄປໃນກະແສຜົນຜະລິດທີ່ fp ຊີ້ໃຫ້ເຫັນ. ຖ້າການຂຽນປະສົບຜົນສໍາເລັດ, ມັນຈະສົ່ງຄືນຕົວອັກສອນທີ່ຂຽນແລະ EOF ຖ້າມີຂໍ້ຜິດພາດເກີດຂື້ນ. ທ່ານສາມາດນໍາໃຊ້ຫນ້າທີ່ດັ່ງຕໍ່ໄປນີ້ເພື່ອຂຽນສະຕຣິງທີ່ລົງທ້າຍດ້ວຍ null ກັບການສະຕຣີມ:
int fputs ( const char *s , FILE *fp );
ຟັງຊັນ fputs () ຂຽນສະຕຣິງ s ໄປຫາກະແສຜົນຜະລິດທີ່ fp ຊີ້ໄປຫາ. ຖ້າການຂຽນປະສົບຜົນສໍາເລັດ, ມັນຈະສົ່ງຄ່າທີ່ບໍ່ແມ່ນຄ່າລົບແລະ EOF ຖ້າມີຂໍ້ຜິດພາດເກີດຂື້ນ. ທ່ານຍັງສາມາດໃຊ້ຟັງຊັນຂອງ int fprintf (FILE * fp, const char * format, ... ) ຂຽນ string ກັບໄຟລ໌. ລອງໃຊ້ຕົວຢ່າງຕໍ່ໄປນີ້:
ຫມາຍເຫດ: ໃຫ້ແນ່ໃຈວ່າທ່ານມີໄດເລກະທໍລີ tmp ທີ່ມີຢູ່, ແລະຖ້າມັນບໍ່ມີ, ທ່ານຈໍາເປັນຕ້ອງສ້າງມັນຢູ່ໃນຄອມພິວເຕີຂອງທ່ານກ່ອນ.
/ tmp ມັກຈະເປັນໄດເລກະທໍລີຊົ່ວຄາວໃນລະບົບ Linux. ຖ້າທ່ານດໍາເນີນການຢູ່ໃນລະບົບ Windows, ທ່ານຈໍາເປັນຕ້ອງດັດແປງມັນກັບໄດເລກະທໍລີທີ່ມີຢູ່ໃນສະພາບແວດລ້ອມທ້ອງຖິ່ນ, ເຊັ່ນ: C: \ tmp, D: \ tmp, ແລະອື່ນໆ.
ຕົວຢ່າງດໍາລົງຊີວິດ
#ລວມທັງ
ເມື່ອລະຫັດຂ້າງເທິງຖືກລວບລວມແລະປະຕິບັດ, ມັນຈະສ້າງໄຟລ໌ໃຫມ່ test.txt ໃນໄດເລກະທໍລີ / tmp. ແລະຂຽນເປັນສອງແຖວໂດຍໃຊ້ສອງຫນ້າທີ່ແຕກຕ່າງກັນ. ໃຫ້ອ່ານໄຟລ໌ນີ້ຕໍ່ໄປ.
ອ່ານໄຟລ໌
ຕໍ່ໄປນີ້ແມ່ນຫນ້າທີ່ງ່າຍດາຍທີ່ສຸດທີ່ຈະອ່ານຕົວອັກສອນດຽວຈາກໄຟລ໌:
int fgetc ( FILE * 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, ... ) ເພື່ອອ່ານ string ຈາກໄຟລ໌, ແຕ່ມັນຢຸດການອ່ານເມື່ອພົບກັບຊ່ອງຫວ່າງທໍາອິດແລະເສັ້ນແຕກ.
ຕົວຢ່າງດໍາລົງຊີວິດ
#ລວມທັງ
ເມື່ອລະຫັດຂ້າງເທິງຖືກລວບລວມແລະປະຕິບັດ, ມັນຈະອ່ານໄຟລ໌ທີ່ສ້າງຂຶ້ນໃນພາກກ່ອນ, ຜົນໄດ້ຮັບຕໍ່ໄປນີ້:
1: ນີ້ 2: ແມ່ນການທົດສອບສໍາລັບ fprintf ...
3: ນີ້ແມ່ນການທົດສອບສໍາລັບການ fputs ...
ທໍາອິດ, ວິທີການຂອງ fscanf() ພຽງແຕ່ອ່ານນີ້ .ເນື່ອງຈາກວ່າມັນພົບຊ່ອງຢູ່ທາງຫລັງ. ອັນທີສອງ, ໂທຫາ functon fgets () ເພື່ອອ່ານສ່ວນທີ່ຍັງເຫຼືອຈົນກ່ວາໃນຕອນທ້າຍຂອງເສັ້ນ. ສຸດທ້າຍ, ໂທຫາ fgets () ເພື່ອອ່ານແຖວທີສອງຢ່າງສົມບູນ.
ຟັງຊັນ Binary 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 );
ຟັງຊັນທັງສອງແມ່ນອ່ານແລະຂຽນສໍາລັບບລັອກການເກັບຮັກສາ - ປົກກະຕິແລ້ວ array ຫຼືໂຄງສ້າງ.
ຂ້າງເທິງກ່ຽວກັບການອ່ານ ແລະການຂຽນໄຟລ໌ C ເປັນຂອງ HDV Phoelectron Technology Ltd., ການດໍາເນີນງານທາງດ້ານເຕັກນິກຊອບແວ. ແລະບໍລິສັດສໍາລັບອຸປະກອນທີ່ກ່ຽວຂ້ອງກັບເຄືອຂ່າຍ (ເຊັ່ນ: ACONU/ ການສື່ສານONU/ ສະຫຼາດONU/ ເສັ້ນໄຍONU, ແລະອື່ນໆ) ໄດ້ນໍາເອົາທີມງານຊໍແວທີ່ມີປະສິດທິພາບ, ສໍາລັບລູກຄ້າທຸກຄົນປັບແຕ່ງຄວາມຕ້ອງການສະເພາະທີ່ຕ້ອງການ, ຍັງໃຫ້ຜະລິດຕະພັນຂອງພວກເຮົາສະຫລາດແລະກ້າວຫນ້າ.