• Giga@hdv-tech.com
  • บริการออนไลน์ 24 ชั่วโมง:
    • 7189078c
    • sns03
    • 6660e33e
    • ยูทูป 拷贝
    • อินสตาแกรม

    C การอ่านและการเขียนเอกสาร

    เวลาโพสต์: 11 ส.ค.-2023

    อธิบายวิธีที่โปรแกรมเมอร์ภาษา 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 ถ่าน *s , FILE *fp );

    ฟังก์ชัน fputs () เขียนสตริง s ไปยังเอาต์พุตสตรีมโดยที่ fp ชี้ไป หากเขียนสำเร็จ จะส่งคืนค่าที่ไม่เป็นลบและส่งกลับ EOF หากเกิดข้อผิดพลาด คุณยังสามารถใช้ฟังก์ชัน int fprintf (FILE * fp, const char * format,...) เขียนสตริงลงในไฟล์ได้ ลองตัวอย่างต่อไปนี้:

    หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณมีไดเร็กทอรี tmp ที่พร้อมใช้งาน และหากไม่มีอยู่ คุณจะต้องสร้างไดเร็กทอรีบนคอมพิวเตอร์ของคุณก่อน

    /tmp มักจะเป็นไดเร็กทอรีชั่วคราวบนระบบ Linux หากคุณทำงานบนระบบ Windows คุณจะต้องแก้ไขเป็นไดเร็กทอรีที่มีอยู่ในสภาพแวดล้อมภายในเครื่อง เช่น: C: \ tmp, D: \ tmp เป็นต้น

    ตัวอย่างการใช้ชีวิต

    #รวม int main () { ไฟล์ *fp = NULL ; fp = fopen ("/tmp/test.txt ", "w+"); fprintf (fp , "นี่คือการทดสอบ fprintf...\n "); fputs ("นี่คือการทดสอบ fputs...\n ", fp ); fclose (fp ); -

    เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการ มันจะสร้างไฟล์ใหม่ test.txt ในไดเร็กทอรี / tmp และเขียนเป็นสองบรรทัดโดยใช้สองฟังก์ชันที่แตกต่างกัน มาอ่านไฟล์นี้กันต่อไป

    อ่านไฟล์

    ต่อไปนี้เป็นฟังก์ชันที่ง่ายที่สุดในการอ่านอักขระตัวเดียวจากไฟล์:

    int fgetc ( ไฟล์ * fp );

    ฟังก์ชั่น fgetc () อ่านอักขระจากไฟล์อินพุตที่ fp ชี้ ค่าที่ส่งคืนคืออักขระการอ่านและ EOF หากเกิดข้อผิดพลาด ฟังก์ชั่นต่อไปนี้ช่วยให้คุณอ่านสตริงจากสตรีม:

    ถ่าน *fgets ( ถ่าน *buf , int n , FILE *fp );

    ฟังก์ชั่น fgets () อ่านอักขระ n-1 จากสตรีมอินพุตที่กำกับโดย fp คัดลอกสตริงการอ่านไปยังบัฟเฟอร์ buf และต่อท้ายอักขระ null ที่ส่วนท้ายเพื่อยุติสตริง

    หากฟังก์ชันนี้พบอักขระบรรทัดที่ขาด '\ n' หรือ EOF ที่ส่วนท้ายของไฟล์ก่อนที่จะอ่านอักขระตัวสุดท้าย จากนั้นจะส่งคืนเฉพาะอักขระที่อ่านเท่านั้น รวมถึงการขึ้นบรรทัดใหม่ด้วย คุณยังสามารถใช้ฟังก์ชัน int fscanf (FILE * fp, const char * format,...) เพื่ออ่านสตริงจากไฟล์ แต่จะหยุดอ่านเมื่อพบช่องว่างแรกและตัวแบ่งบรรทัด

    ตัวอย่างการใช้ชีวิต

    #รวม int main () { ไฟล์ *fp = NULL ; หนังถ่าน [255]; fp = fopen ("/tmp/test.txt ", "r "); fscanf (fp , "%s", บัฟ ); printf ("1: %s \n ", บัฟ ); fgets (บัฟ, 255, (ไฟล์ *)fp ); printf ("2: %s \n ", บัฟ ); fgets (บัฟ, 255, (ไฟล์ *)fp ); printf ("3: %s \n ", บัฟ ); fclose (fp ); -

    เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการ มันจะอ่านไฟล์ที่สร้างขึ้นในส่วนก่อนหน้า โดยให้ผลลัพธ์ดังต่อไปนี้:

    1: 2 นี้: กำลังทดสอบ fprintf...

    3: นี่คือการทดสอบ fputs...

    ขั้นแรก วิธีการของ fscanf() จะอ่านเฉพาะ This . เนื่องจากพบช่องว่างด้านหลัง ประการที่สอง เรียก functon fgets () เพื่ออ่านส่วนที่เหลือจนจบบรรทัด สุดท้ายให้เรียก fgets () เพื่ออ่านแถวที่สองให้ครบถ้วน

    ฟังก์ชันไบนารี I / O

    สองฟังก์ชันต่อไปนี้ใช้สำหรับอินพุตและเอาต์พุตไบนารี:

    size_t fread (โมฆะ *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const โมฆะ *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );

    ทั้งสองฟังก์ชันอ่านและเขียนสำหรับบล็อกหน่วยเก็บข้อมูล ซึ่งโดยปกติจะเป็นอาร์เรย์หรือโครงสร้าง

    ข้างต้นเกี่ยวกับการอ่านและการเขียนไฟล์ C เป็นของ HDV Phoelectron Technology Ltd. ซึ่งเป็นการดำเนินการทางเทคนิคของซอฟต์แวร์ และบริษัทจำหน่ายอุปกรณ์ที่เกี่ยวข้องกับโครงข่าย (เช่น ACสอท/ การสื่อสารสอท/ ฉลาดสอท/ไฟเบอร์สอทฯลฯ) ได้รวบรวมทีมซอฟต์แวร์ที่มีประสิทธิภาพ สำหรับลูกค้าทุกรายที่ปรับแต่งความต้องการพิเศษเฉพาะที่ต้องการ และยังช่วยให้ผลิตภัณฑ์ของเรามีความชาญฉลาดและล้ำสมัยมากขึ้น



    เว็บ聊天