9.4 ฟังก์ชันที่ใช้ในการเปิดและปิดแฟ้มข้อมูล
การเปิดแฟ้มข้อมูลในภาษา C สามารถทำได้โดยใช้ฟังก์ชัน fopen( ) ส่วนการปิดแฟ้มข้อมูลสามารถทำได้โดยใช้ฟังก์ชัน fclose( ) ซึ่งมีรายละเอียดการใช้งานแต่ละฟังก์ชัน ดังนี้
การเปิดแฟ้มข้อมูลในภาษา C สามารถทำได้โดยใช้ฟังก์ชัน fopen( ) ส่วนการปิดแฟ้มข้อมูลสามารถทำได้โดยใช้ฟังก์ชัน fclose( ) ซึ่งมีรายละเอียดการใช้งานแต่ละฟังก์ชัน ดังนี้
9.4.1 ฟังก์ชัน fopen( )
ฟังก์ชัน fopen( ) เป็นฟังก์ชันที่ใช้ในการเปิดแฟ้มข้อมูลที่ต้องการได้ โดยที่ fopen เป็นฟังก์ชันมาตรฐานที่อยู่ในแฟ้ม stdio.h
ดังนั้นก่อนที่จะใช้ฟังก์ชันนี้ จะต้องใช้คำสั่ง #include<stdio.h> อยู่ที่ส่วนต้นของโปรแกรมภาษา C และจะต้องประกาศแฟ้มข้อมูลด้วย คำสั่ง FILE ดังนี้
ฟังก์ชัน fopen( ) เป็นฟังก์ชันที่ใช้ในการเปิดแฟ้มข้อมูลที่ต้องการได้ โดยที่ fopen เป็นฟังก์ชันมาตรฐานที่อยู่ในแฟ้ม stdio.h
ดังนั้นก่อนที่จะใช้ฟังก์ชันนี้ จะต้องใช้คำสั่ง #include<stdio.h> อยู่ที่ส่วนต้นของโปรแกรมภาษา C และจะต้องประกาศแฟ้มข้อมูลด้วย คำสั่ง FILE ดังนี้
รูปแบบการประกาศแฟ้มข้อมูลและเปิดแฟ้มข้อมูล
FILE *fp;
fp = fopen(filename,mode);
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( ) เป็นฟังก์ชันที่ใช้ในการปิดแฟ้มข้อมูลเมื่อใช้งานแฟ้มข้อมูลเสร็จแล้ว เช่น เมื่อสิ้นสุดการบันทึก หรืออ่านข้อมูลจากแฟ้มข้อมูลใดจะต้องปิดแฟ้มข้อมูลนั้น เพื่อทำให้ข้อมูลที่ค้างอยู่ใน Buffer ของหน่วยความจำของเครื่อง ถูกนำไปเก็บไว้ในแฟ้มข้อมูล แต่ถ้าเราลืมใช้คำสั่ง fclose( ) เมื่อสิ้นสุดการทำงานของโปรแกรม ภาษา C จะปิดแฟ้มข้อมูลให้โดยอัตโนมัติ แต่อย่างไรก็ตามผู้เขียนโปรแกรมควรใช้ fclose( ) ทุกครั้งที่ไม่ใช้แฟ้มข้อมูลแล้วเพื่อสร้างลักษณะนิสัยที่ดีในการใช้งานแฟ้มข้อมูล
รูปแบบการปิดแฟ้มข้อมูล
fclose(file pointer);
ตัวอย่างที่ 9.3 แสดงการปิดแฟ้มข้อมูล
fclose(fptr); โดยที่ fptr เป็น file pointer ของแฟ้มข้อมูลที่ต้องการปิด
ข้อควรจำ ฟังก์ชัน fclose( ) จะให้ค่าเท่ากับศูนย์ (NULL) เมื่อปิดไฟล์ได้สำเร็จ
0 ความคิดเห็น:
แสดงความคิดเห็น