วันพุธที่ 17 กันยายน พ.ศ. 2557

07:05
9.9 สรุปท้ายบท
            แฟ้มข้อมูล  (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( )  บันทึกข้อมูลลงแฟ้ม  ขึ้นอยู่กับลักษณะของข้อมูลที่ต้องการบันทึกลงแฟ้มดังนี้
  • ถ้าข้อมูลที่ต้องการบันทึกเป็นตัวอักขระตัวเดียว  (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( )  อ่านข้อมูลขึ้นจากแฟ้มได้  ขึ้นอยู่กับลักษณะของข้อมูลที่ต้องการอ่านขึ้นจากแฟ้มดังนี้
  • ถ้าข้อมูลที่ต้องการอ่านขึ้นจากแฟ้มเป็นตัวอักขระตัวเดียวให้ใช้ฟังก์ชัน     getc( )  เพราะสามารถอ่านข้อมูลตัวอักขระตัวเดียวได้ดี
  • ถ้าข้อมูลที่ต้องการอ่านขึ้นจากแฟ้มเป็นตัวเลขจำนวนเต็ม  หรือตัวเลขจำนวนทศนิยม  หรือสตริงให้ใช้ฟังก์ชัน  fscanf( )  เพราะสามารถจัดรูปแบบข้อมูลที่อ่านขึ้นจากแฟ้มได้
  • ถ้าข้อมูลที่ต้องการอ่านจากแฟ้ม  เป็นข้อมูลแบบโครงสร้าง  หรือตัวแปรชุดให้ใช้ฟังก์ชัน  fread( )  เพราะสามารถกำหนดขนาดเนื้อที่และจำนวนครั้งของการอ่านข้อมูลขึ้นจากแฟ้มได้
                        2.3 นำข้อมูลที่อ่านขึ้นจากแฟ้มไปประมวลผล  เช่น  พิมพ์ค่าออกทางจอภาพ  หรือนำไปคำนวณก็ได้
                        2.4 หลังจากประมวลผลข้อมูลที่ได้จากแฟ้มเสร็จเรียบร้อยแล้ว  จะต้องใช้คำสั่ง
fclose( )   ปิดแฟ้มข้อมูลทุกครั้งเพื่อป้องกันการเสียหายที่อาจเกิดขึ้นได้
ข้อควรระวังเกี่ยวกับการอ่านข้อมูลขึ้นจากแฟ้ม
            ในฟังก์ชัน  fopen( )  เมื่อใช้  mode  “r”  เป็นการเปิดแฟ้มข้อมูล  เพื่ออ่านข้อมูลขึ้นจากแฟ้มข้อมูลอย่างเดียว  ไม่สามารถบันทึกข้อมูลเพิ่มเติมลงไปในแฟ้มได้
            3. การเพิ่มข้อมูลลงไปในแฟ้มข้อมูล  (append  data  into  file) มีขั้นตอนดังนี้
                        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( )  ทุกครั้งที่ไม่ใช้แฟ้มข้อมูลแล้วเพื่อสร้างลักษณะนิสัยที่ดีในการใช้งานแฟ้มข้อมูล
การใช้ฟังก์ชัน putc( ) และ getc( )
            ฟังก์ชัน putc( )  เป็นฟังชันที่ใช้บันทึกข้อมูลตัวอักขระตัวเดียวลงไปในแฟ้มข้อมูลที่ต้องการ
            ฟังก์ชัน getc( )  เป็นฟังก์ชันที่ใช้อ่านข้อมูลตัวอักขระตัวเดียวขึ้นจากแฟ้มข้อมูลที่ต้องการ
การใช้ฟังก์ชัน  fprintf( )  และ  fscanf( )
            ฟังก์ชัน  fprintf( )  เป็นฟังก์ชันที่ใช้บันทึกข้อมูล  (write)  ลงแฟ้มโดยสามารถจัดรูปแบบข้อมูลที่ต้องการบันทึกได้คล้ายกับฟังก์ชัน  printf( )  แตกต่างกันตรงที่  printf( )  เป็นฟังก์ชันที่ใช้พิมพ์ผลลัพธ์ออกทางจอภาพแต่ฟังก์ชัน  fprintf( )  ใช้บันทึกข้อมูลลงแฟ้ม
            ฟังก์ชัน  fscanf( )  เป็นฟังก์ชันที่ใช้อ่านข้อมูล  (read)  ขึ้นจากแฟ้มข้อมูลแล้วนำมาเก็บไว้ในตัวแปรที่ต้องการได้โดยมีการทำงานคล้ายกับฟังก์ชัน  scanf( )  แตกต่างกันตรงที่ฟังก์ชัน  fscanf( )  เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากแฟ้มข้อมูลแต่ฟังก์ชัน  scanf( )  เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดแล้วไปเก็บไว้ในตัวแปรที่ต้องการ
การใช้ฟังก์ชัน fwrite( )  และ  fread( )  ใช้ได้กับ  binary file  เท่านั้น
            ฟังก์ชัน  fwrite( )  เป็นฟังก์ชันที่ใช้เก็บข้อมูลลงแฟ้ม โดยที่การเก็บข้อมูลแต่ละครั้งสามารถกำหนดขนาดของข้อมูลที่ต้องการบันทึกได้
            ฟังก์ชัน  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  ว่าปัจจุบันกำลังชี้อยู่ที่ตำแหน่งใดในแฟ้มข้อมูล  โดยฟังก์ชันนี้จะให้ค่ากลับเป็นตัวเลขจำนวนเต็ม

0 ความคิดเห็น:

แสดงความคิดเห็น