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

07:02
9.4 ฟังก์ชันที่ใช้ในการเปิดและปิดแฟ้มข้อมูล

            การเปิดแฟ้มข้อมูลในภาษา  C  สามารถทำได้โดยใช้ฟังก์ชัน  fopen( )  ส่วนการปิดแฟ้มข้อมูลสามารถทำได้โดยใช้ฟังก์ชัน  fclose( )  ซึ่งมีรายละเอียดการใช้งานแต่ละฟังก์ชัน  ดังนี้
            9.4.1 ฟังก์ชัน fopen( )  
            ฟังก์ชัน  fopen( )  เป็นฟังก์ชันที่ใช้ในการเปิดแฟ้มข้อมูลที่ต้องการได้  โดยที่  fopen  เป็นฟังก์ชันมาตรฐานที่อยู่ในแฟ้ม  stdio.h
ดังนั้นก่อนที่จะใช้ฟังก์ชันนี้  จะต้องใช้คำสั่ง  #include<stdio.h>  อยู่ที่ส่วนต้นของโปรแกรมภาษา  C  และจะต้องประกาศแฟ้มข้อมูลด้วย  คำสั่ง  FILE  ดังนี้
รูปแบบการประกาศแฟ้มข้อมูลและเปิดแฟ้มข้อมูล
FILE   *fp;
fp = fopen(filename,mode);
โดยที่ 

fp  คือ  ตัวชี้ตำแหน่งข้อมูลในแฟ้ม  (file  pointer)  เมื่อใช้คำสั่ง  FILE  *fp;  มีผลทำให้ตัว  file  pointer  ชี้ไปที่ตำแหน่งเริ่มต้นของแฟ้มข้อมูลทันที  โดยที่  fp  นี้จะสามารถชี้ไปยังข้อมูลที่ต้องการในแฟ้มได้โดยอัตโนมัติ  เมื่อมีการบันทึกข้อมูล  หรือการอ่านข้อมูลจากแฟ้ม
filename   คือ  ชื่อแฟ้มข้อมูลที่ตั้งขึ้น  โดยต้องเขียนอยู่ภายใต้เครื่องหมาย  “…”
mode  คือลักษณะของการใช้แฟ้มข้อมูล  เช่น  เปิดแฟ้มขึ้นมาเพื่อบันทึกข้อมูลหรืออ่านข้อมูลขึ้นมาใช้งาน  หรือเพิ่มข้อมูลเข้าไปในแฟ้ม  เป็นต้น  โดยที่  mode  ของการใช้งานแฟ้มข้อมูลมีอยู่หลายชนิดดังตารางที่  9.2  ต่อไปนี้
ตารางที่  9.2  แสดง  mode  ของการใช้แฟ้มข้อมูลในฟังก์ชัน fopen( )
Mode
ความหมาย
text  file
binary  file
”r”,”rt”“rb”เปิดแฟ้มข้อมูลเก่าที่เคยสร้างไว้แล้ว  เพื่ออ่านข้อมูลขึ้นจากแฟ้มอย่างเดียว
ข้อควรระวัง  ถ้าแฟ้มข้อมูลที่ระบุให้เป็นแฟ้มใหม่  จะไม่สามารถเปิดแฟ้มได้
“w”,”wt”“wb”เปิดแฟ้มข้อมูลใหม่  เพื่อบันทึกข้อมูลลงแฟ้มอย่างเดียว
ข้อควรระวัง  ถ้าแฟ้มข้อมูลที่ระบุให้เปิดเป็นแฟ้มเก่า  ข้อมูลในแฟ้มเก่าจะถูก ลบทิ้งไปโดยอัตโนมัติพร้อมกับสร้างแฟ้มใหม่ในชื่อเดิม
“a”,”at”“ab”เปิดแฟ้มข้อมูลเก่าที่เคยสร้างไว้แล้วเพื่อบันทึกข้อมูลเพิ่มลงไปในแฟ้มข้อมูลเก่า  โดยข้อมูลที่เพิ่มเข้าไปจะเป็นข้อมูลชุดสุดท้ายของแฟ้มเสมอ
ข้อควรระวัง  ถ้าแฟ้มข้อมูลที่ระบุให้เป็นแฟ้มใหม่  จะเป็นการสร้างแฟ้มใหม่แต่บันทึกข้อมูลได้ครั้งเดียวเท่านั้น
“r+t”“r+b”เปิดแฟ้มข้อมูลเก่าที่เคยสร้างไว้แล้ว  เพื่ออ่านและบันทึกข้อมูลในแฟ้ม
ข้อควรระวัง  ถ้าใช้  mode  นี้เพื่อบันทึกข้อมูลลงแฟ้ม  คือใช้คู่กับฟังก์ชันบันทึกข้อมูลลงแฟ้ม จะทำให้บันทึกข้อมูลใหม่ทับข้อมูลเก่าลงไปตั้งแต่ต้นแฟ้มไปจนถึงท้ายแฟ้ม ทำให้ข้อมูลเดิมถูกแทนที่ด้วยข้อมูลใหม่
“w+t”“w+b”เปิดแฟ้มข้อมูลใหม่  เพื่อบันทึกและอ่านข้อมูลในแฟ้ม
ข้อควรระวัง  ถ้าแฟ้มข้อมูลที่ระบุไว้เป็นแฟ้มที่กำลังใช้งานอยู่  จะเป็นการทำลายข้อมูลในแฟ้มทั้งหมด  และสร้างแฟ้มใหม่ขึ้นมาแทนที่
“a+t”“a+b”เปิดแฟ้มข้อมูลเก่าที่เคยสร้างไว้แล้วเพื่ออ่านข้อมูลจากแฟ้มและเพิ่มข้อมูลเข้าไปในแฟ้มข้อมูลได้  โดยที่ข้อมูลใหม่ที่เพิ่มเข้าไปจะอยู่ที่ท้ายแฟ้มข้อมูลเสมอ
ข้อควรระวัง  ถ้าแฟ้มข้อมูลที่ระบุให้เปิดเป็นแฟ้มใหม่    จะเป็นการสร้างแฟ้มข้อมูลใหม่ตามชื่อที่ระบุไว้ทันทีและสามารถบันทึกข้อมูลลงไปในแฟ้มได้
          
ตัวอย่างที่  9.1  แสดงการประกาศแฟ้มข้อมูลและเปิดแฟ้มข้อมูล

FILE  *fp;
fp = fopen(“A:test.dat”,”w”);
            หมายความว่า  เปิดแฟ้มข้อมูลชื่อว่า  test.dat  อยู่ที่  drive A  เพื่อใช้สำหรับบันทึกข้อมูลลงแฟ้ม  (write)  อย่างเดียว  โดยมีตัวแปร  fp  เป็น  file pointer  ชี้ตำแหน่งของข้อมูลใน  file
ข้อควรจำ  ฟังก์ชัน  fopen( )  จะให้ค่า  file pointer (fp)  เท่ากับ  NULL  เมื่อเกิดข้อผิดพลาดในการเปิดไฟล์  หรือไม่สามารถเปิดไฟล์ที่ระบุไว้ได้  ในกรณีที่สามารถเปิดแฟ้มข้อมูลได้สำเร็จจะให้ค่า  file  pointer (fp)  ไม่เท่ากับ  NULL
ตัวอย่างที่  9.2  แสดงการประกาศแฟ้มข้อมูลและเปิดแฟ้มข้อมูลพร้อมกับตรวจสอบการเปิดแฟ้ม
FILE  *fp;
If((fp=fopen(“A:test.dat”,”w”))==NULL)
{
      printf(“Error in open file”);
      exit(1);
}
  
            จากตัวอย่างคำสั่งข้างต้น  เราสามารถนำไปใช้งานในโปรแกรมเพื่อตรวจสอบการเปิดแฟ้มข้อมูลได้สำเร็จหรือไม่  ถ้าเปิดแฟ้มไม่สำเร็จจะพิมพ์ข้อความว่า  “Error  in  open  file”  ออกทางจอภาพแล้วออกจากโปรแกรมด้วยคำสั่ง  exit(1);  ในทางตรงกันข้ามถ้าเปิดแฟ้มข้อมูลได้สำเร็จ  จะไม่มีข้อความดังกล่าวข้างต้นและโปรแกรมยังสามารถทำงานต่อไปได้
             9.4.2 ฟังก์ชัน  fclose( )
ฟังก์ชัน fclose( ) เป็นฟังก์ชันที่ใช้ในการปิดแฟ้มข้อมูลเมื่อใช้งานแฟ้มข้อมูลเสร็จแล้ว  เช่น  เมื่อสิ้นสุดการบันทึก  หรืออ่านข้อมูลจากแฟ้มข้อมูลใดจะต้องปิดแฟ้มข้อมูลนั้น  เพื่อทำให้ข้อมูลที่ค้างอยู่ใน  Buffer  ของหน่วยความจำของเครื่อง  ถูกนำไปเก็บไว้ในแฟ้มข้อมูล  แต่ถ้าเราลืมใช้คำสั่ง  fclose( )  เมื่อสิ้นสุดการทำงานของโปรแกรม  ภาษา  C  จะปิดแฟ้มข้อมูลให้โดยอัตโนมัติ  แต่อย่างไรก็ตามผู้เขียนโปรแกรมควรใช้  fclose( )  ทุกครั้งที่ไม่ใช้แฟ้มข้อมูลแล้วเพื่อสร้างลักษณะนิสัยที่ดีในการใช้งานแฟ้มข้อมูล
รูปแบบการปิดแฟ้มข้อมูล
fclose(file  pointer);
  
          
ตัวอย่างที่  9.3  แสดงการปิดแฟ้มข้อมูล
fclose(fptr);  โดยที่  fptr  เป็น  file pointer  ของแฟ้มข้อมูลที่ต้องการปิด
ข้อควรจำ  ฟังก์ชัน  fclose( )  จะให้ค่าเท่ากับศูนย์  (NULL)  เมื่อปิดไฟล์ได้สำเร็จ

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

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