• Giga@hdv-tech.com
  • ບໍລິການອອນໄລນ໌ 24H:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C, ການອ່ານເອກະສານ ແລະການຂຽນ

    ເວລາປະກາດ: ສິງຫາ-11-2023

    ອະທິບາຍວິທີທີ່ນັກຂຽນໂປລແກລມ 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, ແລະອື່ນໆ.

    ຕົວຢ່າງດໍາລົງຊີວິດ

    #ລວມທັງ int main () { FILE *fp = NULL ; fp = fopen("/tmp/test.txt", "w+"); fprintf (fp , "ນີ້ແມ່ນການທົດສອບສໍາລັບ fprintf...\n "); fputs ("ນີ້ແມ່ນການທົດສອບສໍາລັບ fputs...\n ", fp ); fclose (fp ); }

    ເມື່ອລະຫັດຂ້າງເທິງຖືກລວບລວມແລະປະຕິບັດ, ມັນຈະສ້າງໄຟລ໌ໃຫມ່ 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 ຈາກໄຟລ໌, ແຕ່ມັນຢຸດການອ່ານເມື່ອພົບກັບຊ່ອງຫວ່າງທໍາອິດແລະເສັ້ນແຕກ.

    ຕົວຢ່າງດໍາລົງຊີວິດ

    #ລວມທັງ int main () { FILE *fp = NULL ; 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: ນີ້ 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, ແລະອື່ນໆ) ໄດ້ນໍາເອົາທີມງານຊໍແວທີ່ມີປະສິດທິພາບ, ສໍາລັບລູກຄ້າທຸກຄົນປັບແຕ່ງຄວາມຕ້ອງການສະເພາະທີ່ຕ້ອງການ, ຍັງໃຫ້ຜະລິດຕະພັນຂອງພວກເຮົາສະຫລາດແລະກ້າວຫນ້າ.



    ເວັບ​ໄຊ​ຕ​໌​