แฟ้มข้อมูล (data file) คือ แฟ้มที่มีการเก็บข้อมูลที่มีความสัมพันธ์กันมาไว้ด้วยกัน โดยมีการเก็บข้อมูลอย่างต่อเนื่องกันไป ตั้งแต่ต้นแฟ้มข้อมูลไปจนกระทั่งจบแฟ้มข้อมูล โดยที่ผู้เขียนข้อมูลสามารถแบ่งข้อมูลที่ต้องการจัดเก็บลงในแฟ้มเป็น field หรือ record ก็ได้ หรืออาจจัดเก็บข้อมูลตามแนวขนาดเนื้อที่โดยไม่จำเป็นต้องแบ่งข้อมูลในแฟ้มเป็น field หรือ record ก็ได้ โดยปกติผู้เขียนโปรแกรมภาษา C นิยมแบ่งข้อมูลที่ต้องการลงในแฟ้มเป็น field หรือ record เพราะมีความสะดวกในการเรียกใช้ข้อมูลจากแฟ้มที่ต้องการนอกจากนี้ยังสามาถใช้โปรแกรม text editor หรือโปรแกรม word processing สร้างแฟ้มข้อมูลที่ต้องการได้อย่างสะดวกรวดเร็ว
การประมวลผลแฟ้มข้อมูลในภาษา C (data file processing in C)
โดยปกติแล้วผู้เขียนโปรแกรมเกี่ยวกับแฟ้มข้อมูลในภาษา C จะมีความต้องประมวลผลแฟ้มข้อมูลอยู่ 3 แบบ คือ
1. การบันทึกข้อมูลในแฟ้มข้อมูล (write data into file) มีขั้นตอนดังนี้
1.1 เปิดแฟ้มข้อมูลด้วยคำสั่ง fopen( ) ตั้งชื่อแฟ้มข้อมูล (file name) พร้อมกับระบุ mode ของการบันทึกข้อมูลลงในแฟ้มเป็น “w”
1.2 บันทึกข้อมูลลงในแฟ้มโดยใช้ฟังก์ชัน putc( ) หรือ fprintf( ) หรือ fwrite( ) บันทึกข้อมูลลงแฟ้ม ขึ้นอยู่กับลักษณะของข้อมูลที่ต้องการบันทึกลงแฟ้มดังนี้
โดยปกติแล้วผู้เขียนโปรแกรมเกี่ยวกับแฟ้มข้อมูลในภาษา C จะมีความต้องประมวลผลแฟ้มข้อมูลอยู่ 3 แบบ คือ
1. การบันทึกข้อมูลในแฟ้มข้อมูล (write data into file) มีขั้นตอนดังนี้
1.1 เปิดแฟ้มข้อมูลด้วยคำสั่ง fopen( ) ตั้งชื่อแฟ้มข้อมูล (file name) พร้อมกับระบุ mode ของการบันทึกข้อมูลลงในแฟ้มเป็น “w”
1.2 บันทึกข้อมูลลงในแฟ้มโดยใช้ฟังก์ชัน putc( ) หรือ fprintf( ) หรือ fwrite( ) บันทึกข้อมูลลงแฟ้ม ขึ้นอยู่กับลักษณะของข้อมูลที่ต้องการบันทึกลงแฟ้มดังนี้
- ถ้าข้อมูลที่ต้องการบันทึกเป็นตัวอักขระตัวเดียว (single character) ให้ฟังก์ชัน putc( ) เพราะสามารถบันทึกตัวอักขระตัวเดียวได้ดี
- ถ้าข้อมูลที่ต้องการบันทึกเป็นตัวเลขจำนวนเต็ม (integer) หรือตัวเลขจำนวนทศนิยม (floationg point) หรือสตริง (strings) ให้ใช้ฟังก์ชัน fprintf( ) เพราะสามารถจัดรูปแบบข้อมูลที่บันทึกได้
- ถ้าข้อมูลที่ต้องการบันทึกเป็นข้อมูลแบบโครงสร้าง (structures) หรือตัวแปรชุด (arrays) ให้ใช้ฟังก์ชัน fwrite( ) เพราะสามารถกำหนดเนื้อที่และจำนวนครั้งของการบันทึกข้อมูลได้
1.3 หลังจากบันทึกข้อมูลลงแฟ้มเรียบร้อยแล้ว จะต้องใช้คำสั่ง fclose( ) ปิดแฟ้มข้อมูลทุกครั้งเพื่อป้องกันความเสียหายที่อาจเกิดขึ้นได้
ข้อมูลควรระวังเกี่ยวกับการบันทึกข้อมูลลงแฟ้ม
ในฟังก์ชัน fopen( ) เมื่อใช้ mode “w” เป็นการเปิดแฟ้มข้อมูลเพื่อบันทึกข้อมูลลงในแฟ้มเท่านั้น ถ้าเป็นแฟ้มข้อมูลเก่าที่เคยเก็บข้อมูลไว้แล้ว จะมีผลทำให้ข้อมูลทั้งหมดในแฟ้มข้อมูลเก่า ถูกลบทิ้งไปโดยอัตโนมัติ แล้วสร้างแฟ้มข้อมูลใหม่ขึ้นมาแทนที่
2. การอ่านข้อมูลขึ้นจากแฟ้มข้อมูลขึ้นมาใช้งาน (read data from file) มีขั้นตอนดังนี้
2.1 เปิดแฟ้มข้อมูลด้วยคำสั่ง fopen( ) ตั้งชื่อแฟ้มข้อมูล พร้อมกับระบุ mode ของการบันทึกข้อมูลลงแฟ้มเป็น “r”
2.2 อ่านข้อมูลขึ้นจากแฟ้มโดยสามารถใช้ฟังก์ชัน getc( ) หรือ fscanf( ) หรือ fread( ) อ่านข้อมูลขึ้นจากแฟ้มได้ ขึ้นอยู่กับลักษณะของข้อมูลที่ต้องการอ่านขึ้นจากแฟ้มดังนี้
2.2 อ่านข้อมูลขึ้นจากแฟ้มโดยสามารถใช้ฟังก์ชัน getc( ) หรือ fscanf( ) หรือ fread( ) อ่านข้อมูลขึ้นจากแฟ้มได้ ขึ้นอยู่กับลักษณะของข้อมูลที่ต้องการอ่านขึ้นจากแฟ้มดังนี้
- ถ้าข้อมูลที่ต้องการอ่านขึ้นจากแฟ้มเป็นตัวอักขระตัวเดียวให้ใช้ฟังก์ชัน getc( ) เพราะสามารถอ่านข้อมูลตัวอักขระตัวเดียวได้ดี
- ถ้าข้อมูลที่ต้องการอ่านขึ้นจากแฟ้มเป็นตัวเลขจำนวนเต็ม หรือตัวเลขจำนวนทศนิยม หรือสตริงให้ใช้ฟังก์ชัน fscanf( ) เพราะสามารถจัดรูปแบบข้อมูลที่อ่านขึ้นจากแฟ้มได้
- ถ้าข้อมูลที่ต้องการอ่านจากแฟ้ม เป็นข้อมูลแบบโครงสร้าง หรือตัวแปรชุดให้ใช้ฟังก์ชัน fread( ) เพราะสามารถกำหนดขนาดเนื้อที่และจำนวนครั้งของการอ่านข้อมูลขึ้นจากแฟ้มได้
2.3 นำข้อมูลที่อ่านขึ้นจากแฟ้มไปประมวลผล เช่น พิมพ์ค่าออกทางจอภาพ หรือนำไปคำนวณก็ได้
2.4 หลังจากประมวลผลข้อมูลที่ได้จากแฟ้มเสร็จเรียบร้อยแล้ว จะต้องใช้คำสั่ง
fclose( ) ปิดแฟ้มข้อมูลทุกครั้งเพื่อป้องกันการเสียหายที่อาจเกิดขึ้นได้
ข้อควรระวังเกี่ยวกับการอ่านข้อมูลขึ้นจากแฟ้ม2.4 หลังจากประมวลผลข้อมูลที่ได้จากแฟ้มเสร็จเรียบร้อยแล้ว จะต้องใช้คำสั่ง
fclose( ) ปิดแฟ้มข้อมูลทุกครั้งเพื่อป้องกันการเสียหายที่อาจเกิดขึ้นได้
ในฟังก์ชัน fopen( ) เมื่อใช้ mode “r” เป็นการเปิดแฟ้มข้อมูล เพื่ออ่านข้อมูลขึ้นจากแฟ้มข้อมูลอย่างเดียว ไม่สามารถบันทึกข้อมูลเพิ่มเติมลงไปในแฟ้มได้
3. การเพิ่มข้อมูลลงไปในแฟ้มข้อมูล (append data into file) มีขั้นตอนดังนี้
3.1 เปิดแฟ้มข้อมูล ด้วยคำสั่ง fopen( ) ตั้งชื่อแฟ้มข้อมูลพร้อมกับระบุ mode ของการอ่านข้อมูลจากแฟ้มเป็น “a”
3.2 เขียนคำสั่งเกี่ยวกับการบันทึกข้อมูลเพิ่มลงแฟ้ม โดยสามารถใช้คำสั่ง fprintf( ) บันทึกข้อมูลลงแฟ้มหรือจะใช้คำสั่ง fwrite( ) บันทึกข้อมูลลงแฟ้มก็ได้ ขึ้นอยู่กับความต้องการของผู้เขียนโปรแกรม
3.3 หลังจากบันทึกข้อมูลลงแฟ้มเสร็จเรียบร้อยแล้ว จะต้องใช้คำสั่ง fclose( ) ปิดแฟ้มข้อมูลทุกครั้งเพื่อป้องกันความเสียหายที่อาจเกิดขึ้นได้
ข้อควรระวังเกี่ยวกับการเพิ่มข้อมูลลงแฟ้ม3.1 เปิดแฟ้มข้อมูล ด้วยคำสั่ง fopen( ) ตั้งชื่อแฟ้มข้อมูลพร้อมกับระบุ mode ของการอ่านข้อมูลจากแฟ้มเป็น “a”
3.2 เขียนคำสั่งเกี่ยวกับการบันทึกข้อมูลเพิ่มลงแฟ้ม โดยสามารถใช้คำสั่ง fprintf( ) บันทึกข้อมูลลงแฟ้มหรือจะใช้คำสั่ง fwrite( ) บันทึกข้อมูลลงแฟ้มก็ได้ ขึ้นอยู่กับความต้องการของผู้เขียนโปรแกรม
3.3 หลังจากบันทึกข้อมูลลงแฟ้มเสร็จเรียบร้อยแล้ว จะต้องใช้คำสั่ง fclose( ) ปิดแฟ้มข้อมูลทุกครั้งเพื่อป้องกันความเสียหายที่อาจเกิดขึ้นได้
ในฟังก์ชัน fopen( ) เมื่อใช้ mode “a” เป็นการเปิดแฟ้มข้อมูลสำหรับบันทึกข้อมูลเพิ่มเติมลงไปในแฟ้มได้ โดยที่ข้อมูลที่เพิ่มเข้าไปจะเป็นข้อมูลชุดสุดท้ายของแฟ้มเสมอ
ฟังก์ชันที่ใช้ในการเปิดและปิดแฟ้มข้อมูล
การเปิดแฟ้มข้อมูลในภาษา C สามารถทำได้โดยใช้ฟังก์ชัน fopen( ) ส่วนการปิดแฟ้มข้อมูลสามารถทำได้โดยใช้ฟังก์ชัน fclose( ) ซึ่งมีรายละเอียดการใช้งานแต่ละฟังก์ชัน ดังนี้
1. ฟังก์ชัน fopen( ) เป็นฟังก์ชันที่ใช้ในการเปิดแฟ้มข้อมูลที่ต้องการได้ โดยที่ fopen เป็นฟังก์ชันมาตรฐานที่อยู่ในแฟ้ม stdio.h
2. ฟังก์ชัน fclose( ) เป็นฟังก์ชันที่ใช้ในการปิดแฟ้มข้อมูลเมื่อใช้งานแฟ้มข้อมูลเสร็จแล้ว เช่น เมื่อสิ้นสุดการบันทึก หรืออ่านข้อมูลจากแฟ้มข้อมูลใดจะต้องปิดแฟ้มข้อมูลนั้น เพื่อทำให้ข้อมูลที่ค้างอยู่ใน Buffer ของหน่วยความจำของเครื่อง ถูกนำไปเก็บไว้ในแฟ้มข้อมูล แต่ถ้าเราลืมใช้คำสั่ง fclose( ) เมื่อสิ้นสุดการทำงานของโปรแกรม ภาษา C จะปิดแฟ้มข้อมูลให้โดยอัตโนมัติ แต่อย่างไรก็ตามผู้เขียนโปรแกรมควรใช้ fclose( ) ทุกครั้งที่ไม่ใช้แฟ้มข้อมูลแล้วเพื่อสร้างลักษณะนิสัยที่ดีในการใช้งานแฟ้มข้อมูล
การเปิดแฟ้มข้อมูลในภาษา C สามารถทำได้โดยใช้ฟังก์ชัน fopen( ) ส่วนการปิดแฟ้มข้อมูลสามารถทำได้โดยใช้ฟังก์ชัน fclose( ) ซึ่งมีรายละเอียดการใช้งานแต่ละฟังก์ชัน ดังนี้
1. ฟังก์ชัน fopen( ) เป็นฟังก์ชันที่ใช้ในการเปิดแฟ้มข้อมูลที่ต้องการได้ โดยที่ fopen เป็นฟังก์ชันมาตรฐานที่อยู่ในแฟ้ม stdio.h
2. ฟังก์ชัน fclose( ) เป็นฟังก์ชันที่ใช้ในการปิดแฟ้มข้อมูลเมื่อใช้งานแฟ้มข้อมูลเสร็จแล้ว เช่น เมื่อสิ้นสุดการบันทึก หรืออ่านข้อมูลจากแฟ้มข้อมูลใดจะต้องปิดแฟ้มข้อมูลนั้น เพื่อทำให้ข้อมูลที่ค้างอยู่ใน Buffer ของหน่วยความจำของเครื่อง ถูกนำไปเก็บไว้ในแฟ้มข้อมูล แต่ถ้าเราลืมใช้คำสั่ง fclose( ) เมื่อสิ้นสุดการทำงานของโปรแกรม ภาษา C จะปิดแฟ้มข้อมูลให้โดยอัตโนมัติ แต่อย่างไรก็ตามผู้เขียนโปรแกรมควรใช้ fclose( ) ทุกครั้งที่ไม่ใช้แฟ้มข้อมูลแล้วเพื่อสร้างลักษณะนิสัยที่ดีในการใช้งานแฟ้มข้อมูล
การใช้ฟังก์ชัน putc( ) และ getc( )
ฟังก์ชัน putc( ) เป็นฟังชันที่ใช้บันทึกข้อมูลตัวอักขระตัวเดียวลงไปในแฟ้มข้อมูลที่ต้องการ
ฟังก์ชัน getc( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลตัวอักขระตัวเดียวขึ้นจากแฟ้มข้อมูลที่ต้องการ
ฟังก์ชัน putc( ) เป็นฟังชันที่ใช้บันทึกข้อมูลตัวอักขระตัวเดียวลงไปในแฟ้มข้อมูลที่ต้องการ
ฟังก์ชัน getc( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลตัวอักขระตัวเดียวขึ้นจากแฟ้มข้อมูลที่ต้องการ
การใช้ฟังก์ชัน fprintf( ) และ fscanf( )
ฟังก์ชัน fprintf( ) เป็นฟังก์ชันที่ใช้บันทึกข้อมูล (write) ลงแฟ้มโดยสามารถจัดรูปแบบข้อมูลที่ต้องการบันทึกได้คล้ายกับฟังก์ชัน printf( ) แตกต่างกันตรงที่ printf( ) เป็นฟังก์ชันที่ใช้พิมพ์ผลลัพธ์ออกทางจอภาพแต่ฟังก์ชัน fprintf( ) ใช้บันทึกข้อมูลลงแฟ้ม
ฟังก์ชัน fscanf( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูล (read) ขึ้นจากแฟ้มข้อมูลแล้วนำมาเก็บไว้ในตัวแปรที่ต้องการได้โดยมีการทำงานคล้ายกับฟังก์ชัน scanf( ) แตกต่างกันตรงที่ฟังก์ชัน fscanf( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากแฟ้มข้อมูลแต่ฟังก์ชัน scanf( ) เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดแล้วไปเก็บไว้ในตัวแปรที่ต้องการ
ฟังก์ชัน fprintf( ) เป็นฟังก์ชันที่ใช้บันทึกข้อมูล (write) ลงแฟ้มโดยสามารถจัดรูปแบบข้อมูลที่ต้องการบันทึกได้คล้ายกับฟังก์ชัน printf( ) แตกต่างกันตรงที่ printf( ) เป็นฟังก์ชันที่ใช้พิมพ์ผลลัพธ์ออกทางจอภาพแต่ฟังก์ชัน fprintf( ) ใช้บันทึกข้อมูลลงแฟ้ม
ฟังก์ชัน fscanf( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูล (read) ขึ้นจากแฟ้มข้อมูลแล้วนำมาเก็บไว้ในตัวแปรที่ต้องการได้โดยมีการทำงานคล้ายกับฟังก์ชัน scanf( ) แตกต่างกันตรงที่ฟังก์ชัน fscanf( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากแฟ้มข้อมูลแต่ฟังก์ชัน scanf( ) เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดแล้วไปเก็บไว้ในตัวแปรที่ต้องการ
การใช้ฟังก์ชัน fwrite( ) และ fread( ) ใช้ได้กับ binary file เท่านั้น
ฟังก์ชัน fwrite( ) เป็นฟังก์ชันที่ใช้เก็บข้อมูลลงแฟ้ม โดยที่การเก็บข้อมูลแต่ละครั้งสามารถกำหนดขนาดของข้อมูลที่ต้องการบันทึกได้
ฟังก์ชัน fread( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากแฟ้ม โดยที่แต่ละครั้งสามารถกำหนดขนาด (size) ของข้อมูลที่ต้องการอ่านได้
ฟังก์ชัน fread( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากแฟ้ม โดยที่แต่ละครั้งสามารถกำหนดขนาด (size) ของข้อมูลที่ต้องการอ่านได้
ฟังก์ชันที่ใช้ควบคุมตำแหน่งของ file pointer ในแฟ้มข้อมูล
การควบคุมตำแหน่งของ fp (file pointer) ในแฟ้มข้อมูล นิยมใช้กันมากในการประมวลผลแฟ้มข้อมูลแบบสุ่ม (random file access) ซึ่งสามารถให้ fp ไปยังตำแหน่งเริ่มต้นของแฟ้มข้อมูล (BOF =beginning of file) หรือ ตำแหน่งใดตำแหน่งหนึ่งในแฟ้มข้อมูลได้
ฟังก์ชันที่ใช้ควบคุมตำแหน่ง file pointer มีดังนี้
ฟังก์ชัน rewind( ) เป็นฟังก์ชันที่ใช้ย้ายตำแหน่งของ file pointer ไปยังตำแหน่งเริ่มต้นของแฟ้ม
ฟังก์ชัน fseek( ) เป็นฟังก์ชันที่ใช้ย้ายตำแหน่งของ file pointer ไปยังตำแหน่งที่ต้องการในแฟ้มข้อมูลโดยจะต้องกำหนดจุดเริ่มต้น (origin) ของ file pointer และค่า offset
ฟังก์ชัน ftell( ) เป็นฟังก์ชันที่ใช้บอกตำแหน่งของ file pointer ว่าปัจจุบันกำลังชี้อยู่ที่ตำแหน่งใดในแฟ้มข้อมูล โดยฟังก์ชันนี้จะให้ค่ากลับเป็นตัวเลขจำนวนเต็ม
การควบคุมตำแหน่งของ fp (file pointer) ในแฟ้มข้อมูล นิยมใช้กันมากในการประมวลผลแฟ้มข้อมูลแบบสุ่ม (random file access) ซึ่งสามารถให้ fp ไปยังตำแหน่งเริ่มต้นของแฟ้มข้อมูล (BOF =beginning of file) หรือ ตำแหน่งใดตำแหน่งหนึ่งในแฟ้มข้อมูลได้
ฟังก์ชันที่ใช้ควบคุมตำแหน่ง file pointer มีดังนี้
ฟังก์ชัน rewind( ) เป็นฟังก์ชันที่ใช้ย้ายตำแหน่งของ file pointer ไปยังตำแหน่งเริ่มต้นของแฟ้ม
ฟังก์ชัน fseek( ) เป็นฟังก์ชันที่ใช้ย้ายตำแหน่งของ file pointer ไปยังตำแหน่งที่ต้องการในแฟ้มข้อมูลโดยจะต้องกำหนดจุดเริ่มต้น (origin) ของ file pointer และค่า offset
ฟังก์ชัน ftell( ) เป็นฟังก์ชันที่ใช้บอกตำแหน่งของ file pointer ว่าปัจจุบันกำลังชี้อยู่ที่ตำแหน่งใดในแฟ้มข้อมูล โดยฟังก์ชันนี้จะให้ค่ากลับเป็นตัวเลขจำนวนเต็ม
0 ความคิดเห็น:
แสดงความคิดเห็น