Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ไฟล์ข้อความ (Text File) และ ไฟล์ไบนารี (Binary File) ในภาษา C


ประเภทของไฟล์ในภาษา C

มี 2 ประเภทหลัก:

  1. Text File (ไฟล์ข้อความ)
  2. Binary File (ไฟล์ไบนารี)

Text File (ไฟล์ข้อความ)

  • ประกอบด้วยตัวอักษรและตัวเลขที่ **มนุษย์อ่านเข้าใจได้**
  • หากมีข้อผิดพลาด สามารถแก้ไขได้ง่ายเพราะอ่านออกมาเป็นข้อความ
  • เก็บข้อมูล **1 ตัวอักษรต่อ 1 ไบต์**
  • ตัวอย่าง: เลข 4567 ใช้ 2 ไบต์ในหน่วยความจำ แต่ใช้ **5 ไบต์** ใน Text File (4 ตัวเลข + newline/null)
  • รูปแบบข้อมูลมักเป็น **Line-oriented** (แต่ละบรรทัดคือคำสั่ง/ข้อมูลชุด)
  • ตัวอย่าง: .txt, .c, .h, .csv, .json, .xml

Binary File (ไฟล์ไบนารี)

  • ประกอบด้วย **0 และ 1** ที่ **คอมพิวเตอร์เข้าใจได้โดยตรง**
  • หากมีข้อผิดพลาด จะทำให้ไฟล์เสียหาย (Corrupt) และยากต่อการตรวจสอบ
  • เก็บข้อมูล **เหมือนในหน่วยความจำ** เช่น int 4 ไบต์ ใน RAM ก็ 4 ไบต์ ในไฟล์ก็ 4 ไบต์
  • ต้องมี **ซอฟต์แวร์ที่ตรงกัน** เพื่ออ่าน/เขียน (เช่น MP3 ต้องเล่นด้วย Music Player ไม่ใช่ Image Viewer)
  • ตัวอย่าง: .exe, .jpg, .mp3, .mp4, .pdf, .docx, .zip

การจัดประเภทเพิ่มเติม: การเข้าถึงข้อมูล

  • Sequential Files (ไฟล์ลำดับ) - เข้าถึงข้อมูลตามลำดับ ต้องอ่านทีละเรคคอร์ด
  • Random Access Files (ไฟล์เข้าถึงสุ่ม) - เข้าถึงข้อมูลที่ตำแหน่งใดก็ได้ทันที (ใช้ fseek())

ตารางเปรียบเทียบสรุป

คุณสมบัติText FileBinary File
อ่านโดยมนุษย์ได้ (Human-readable)ไม่ได้ (Machine-readable)
ขนาดไฟล์ใหญ่กว่า (สำหรับตัวเลข)เล็กกว่า (Compact)
ความเร็ว I/Oช้ากว่า (ต้องแปลงรูปแบบ)เร็วกว่า (Copy memory ตรงๆ)
Portabilityสูง (ข้าม OS/Arch ได้)ต่ำ (ขึ้นกับ Endianness, sizeof)
การแก้ไข Errorง่ายยาก (Corrupt ได้ง่าย)
ฟังก์ชัน Cfprintf, fscanf, fgets, fputsfread, fwrite

ตัวอย่างการเปิดไฟล์

// Text file
FILE *fp = fopen("data.txt", "r");   // อ่านข้อความ
FILE *fp = fopen("data.txt", "w");   // เขียนข้อความ

// Binary file
FILE *fp = fopen("image.jpg", "rb"); // อ่านไบนารี
FILE *fp = fopen("data.bin", "wb");  // เขียนไบนารี