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

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

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

    อธิบายวิธีที่โปรแกรมเมอร์ 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 , ไฟล์ *fp );

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

    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, (FILE *)fp );printf ("2: %s \n ", หนังสัตว์ );fgets (หนัง , 255, (FILE *)fp );printf ("3: %s \n ", หนังสัตว์ );fclose (fp );}

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

    1: This 2: กำลังทดสอบ fprintf...

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

    ขั้นแรก เมธอดของ fscanf() อ่านเฉพาะ This . เพราะมันพบช่องว่างด้านหลังประการที่สอง เรียกใช้ฟังก์ชันตัน 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 void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );

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

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



    เว็บ聊天