5.1 หลักการเขียนโปรแกรมจัดการแฟ้มข้อมูล

ชนิดของแฟ้มข้อมูล
  1. Text file
    • เป็นการจัดเก็บแฟ้มข้อมูลในลักษณะข้อความ (Text)
    • ซึ่งจะต้องแปลงข้อความไปตามรหัสแอสกี (ASCII CODE) มีความยาวบรรทัดละ 256 ตัวอักษร ท้ายบรรทัดจะมีรหัส (new line) หมายถึง การ carriage return หรือการขึ้นบรรทัดใหม่
  2. Binary file
    • เป็นการเก็บแฟ้มข้อมูลในระบบเลขฐานสอง หรือ Binary code
    • ไม่ต้องแปลงเหมือนกับ Text file เพราะข้อมูลในระบบคอมพิวเตอร์ถูกจัดเก็บในระบบเลขฐานสองอยู่แล้ว

หลักการเขียนโปรแกรมจัดการแฟ้มข้อมูล
  1. การเปิดแฟ้มข้อมูล
    • เป็นขั้นตอนแรกที่ต้องทำ ในการเขียนโปรแกรมจัดการแฟ้มข้อมูล
    • เหตุผลที่จะต้องเปิดแฟ้มข้อมูล มีอยู่ 2 ประการ คือ
      1. เพื่อกำหนดให้ File Pointer ชี้ไปที่ตำแหน่งแรก
      2. เพื่อสร้างเนื้อที่ความจำชั่วคราว (Buffer) สำหรับทำการอ่านข้อมูล บันทึกข้อมูล และเพิ่มข้อมูล จะทำให้การทำงานทำได้เร็วขึ้น ไม่ต้องกระทำกับดิสก์โดยตรง
  2. การอ่านข้อมูล / การบันทึกข้อมูล
    • ขั้นตอนต่อจากการเปิดแฟ้มข้อมูล คือ การเรียกใช้ฟังก์ชั่น เพื่ออ่านข้อมูล บันทึกข้อมูล และเพิ่มข้อมูล ลงแฟ้มข้อมูล
  3. การปิดแฟ้มข้อมูล
    • ขั้นตอนนี้ เป็นการนำข้อมูลทึ่อยู่บนเนื้อที่ความจำชั่วคราว (Buffer) จัดเก็บลงดิสก์ (Disk)

การเปิดแฟ้มข้อมูล
  • เป็นการบ่งบอกให้คอมไพเลอร์ (Compiler) ทราบว่าจะมีการอ่านและบันทึกข้อมูล
  • โดยมีตัวแปรพอยน์เตอร์ (Pointer) เป็นตัวชี้แฟ้มข้อมูล
  • นอกจากนั้นยังเป็นการจองเนื้อที่ความจำชั่วคราว (Buffer) 
  • รูปแบบ

    FILE *fp
    fp = fopen(FileName, Mode)

    File หมายถึง ระบุตัวแปรพอยน์เตอร์เป็นประเภทแฟ้มข้อมูล
    fp หมายถึง ตัวแปรพอยน์เตอร์
    fopen()  หมายถึง ฟังก์ชันที่ใช้ในการเปิดแฟ้มข้อมูล
    FileName หมายถึง ชื่อแฟ้มข้อมูลที่ต้องการเปิดใช้
    Mode หมายถึง การเลือกชนิดของการเปิดแฟ้มข้อมูล


การปิดแฟ้มข้อมูล
  • หลังจากทำการเปิดแฟ้มข้อมูล อ่านข้อมูล และบันทึกข้อมูลเรียบร้อยแล้ว ขั้นตอนสุดท้ายคือการปิดแฟ้มข้อมูล โดยใช้ฟังก์ชัน fclose() เพื่อนำข้อมูลที่อยู่บน (Buffer) จัดเก็บลงดิสก์
  • หากปิดแฟ้มข้อมูลสำเร็จจะให้ค่าเป็นศูนย์
  • หากปิดแฟ้มข้อมูลไม่สำเร็จ จะส่งค่า EOF (End of File) กลับคืนมาให้
  • รูปแบบ

    fclose(fp)

    fp หมายถึง ตัวแปรพอยน์เตอร์


ฟังก์ชั่น feof()
  • เป็นฟังก์ชั่นสำหรับตรวจสอบว่ามีการอ่านข้อมูลหมดแฟ้มข้อมูลหรือไม่
  • รูปแบบ

    feof(fp)

    fp หมายถึง ตัวแปรพอยน์เตอร์

ฟังก์ชั่น ferror()
  • เป็นฟังก์ชั่นสำหรับตรวจสอบว่ามีข้อผิดพลาดจากการอ่านแฟ้มข้อมูลหรือไม่
    • ถ้ามีข้อผิดพลาดจะส่งค่าที่ไม่ใช่ศูนย์กลับมา
    • ถ้าไม่มีข้อผิดพลาด จะส่งค่าศูนย์กลับมา
  • รูปแบบ

    ferror(fp)

    fp หมายถึง ตัวแปรพอยน์เตอร์

ฟังก์ชั่น rewind()
  • เป็นฟังก์ชั่นสำหรับให้ตัวพอยน์เตอร์ชี้กลับไปที่ตำแหน่งเริ่มต้นของข้อมูล
  • รูปแบบ

    rewind(fp)

    fp หมายถึง ตัวแปรพอยน์เตอร์

ฟังก์ชั่น fseek()
  • เป็นฟังก์ชั่นสำหรับให้ตัวแปรพอยน์เตอร์ชี้กลับไปที่ตำแหน่งข้อมูลใด ๆ ในไฟล์
  • รูปแบบ

    fseek(fp, offset, origin)

    fp หมายถึง ตัวแปรพอยน์เตอร์
    offset หมายถึง ระยะห่างจากตำแหน่งเริ่มต้น มีหน่วยเป็นไบต์ ต้องประกาศแบบ long
    origin หมายถึง ค่าที่ย้ายไป สามารถกำหนดได้ 2 ประเภท คือ 1. แบบค่าคงที่ (Constant) 2. แบบ Macro

     
ฟังก์ชั่น ftell()
  • เป็นฟังก์ชั่นสำหรับให้บอกตำแหน่งของพอยน์เตอร์ที่ชี้อยู่ว่าอยู่ตำแหน่งที่เท่าไหร่
  • รูปแบบ

    ftell(fp)

    fp หมายถึง ตัวแปรพอยน์เตอร์

ฟังก์ชั่น remove()
  • เป็นฟังก์ชั่นสำหรับลบแฟ้มข้อมูล
    • ถ้าลบแฟ้มข้อมูลได้ จะให้ค่าเป็นศูนย์
    • ถ้าลบแฟ้มข้อมูลไม่ได้ จะให้ค่าเป็นค่าอื่น ๆ  ที่ไม่ใช่ศูนย์
  • รูปแบบ

    remove(fp)

    fp หมายถึง ตัวแปรพอยน์เตอร์

เข้าดู : 313 ครั้ง