การทำงานบนแฟ้มข้อมูลมีขั้นตอนดังนี้
1. มีการสร้างแฟ้มข้อมูล(create file)
2. มีการเรียกใช้ข้อมูลจากแฟ้ม (retrieve file) เพื่อทำการปรับปรุงข้อมูล (ค้นหา ลบ เพิ่ม หรือ แก้ไข)
สร้างตัวแปร
เมื่อต้องการสร้างหรือเรียกใช้ไฟล์ข้อมูล ภายในโปรแกรมต้องประกาศตัวแปรที่มีชนิดเป็นแฟ้มข้อมูล
VAR F: file of real;
กำหนดไฟล์ในแผ่นดิสก์(Assign)ให้ตัวแปร
เนื่องจากข้อมูลมักเก็บไว้ในสื่อบันทึก เช่น แผ่นดิสก์ เพื่อให้ทราบว่าตัวแปร F เชื่อมโยงกับแฟ้มข้อมูลใดในแผ่นดิสก์ สามารถทำได้โดยคำสั่ง ASSIGN
การปิดไฟล์
ในการปิดไฟล์จะใช้คำสั่ง
int fclose(FILE *stream);
fclose จะทำการฟลัชบัฟเฟอร์ ทำให้ข้อมูลใดๆ ในบัฟเฟอร์ที่ยังไม่ถูกเขียนลงดิสก์ มีการเขียนลงบนดิสก์ แล้วทำการปิดไฟล์ fclose จะคืนค่า 0 แต่หากมีข้อผิดพลาดเกิดขึ้นจะคืค่า EOF
การอ่านไฟล์
การอ่านไฟล์โดยใช้ fscanf
การอ่านไฟล์โดยใช้ fscanf มีรูปแบบดังนี้
int fscanf(FILE *stream, const char *format, ...);
stream คือตัวแปรพอยน์เตอร์ที่ชี้ ไปยังไฟล์สตรีม
format คือ สตริงกำหนดรูปแบบในการอ่านข้อมูลขึ้นมาจาก ไฟล์ เช่น อ่านข้อมูลเป็นชนิด int ใช้ %d ในสตริงกำหนดรูปแบบ
ตามด้วยแอดเดรสของตัวแปรที่จะเก็บค่าข้อมูลจากการอ่านไฟล์ (จะต้องกําหนดแอดเดรสของตัวแปรโดยใช้สัญลักษณ์ &) โดยอาจมีมากกว่า 1 ตัว
การเขียนไฟล์
ประโยชน์ที่ได้รับจากการสร้างไฟล์แบบเท็กซ์
การใช้ตัวแปรและประมวลผลตัวโปรแกรมทังหมดจะทํางานอยู่ในหน่วยความจําเท่านัน หมายความว่าเมือโปรแกรมทํางานเสร็จข้อมูลต่าง ๆ ก็จะสูญหายไป ถ้าหากต้องการให้ข้อมูลยังคงอยู่สามารถทําได้โดย เขียนข้อมูลผลลัพธ์เก็บเอาไว้ในไฟล์
การแก้ไขหรือลบไฟล์แบบเท็กซ์
เราไม่สามารถเข้าไปแก้ไขหรือลบที่ไฟล์เก่าได้โดยตรง เราต้องสร้างไฟล์ขึ้นมาอีกไฟล์แล้วทำการเขียนสิ่งที่แก้ลงไปในไฟล์ใหม่ แล้วลบไฟล์เก่าทิ้ง แล้วค่อยrenameไฟล์ใหม่ ให้เป็นชื่อไฟล์เก่า ถ้าทำวิธีนี้จะเสมือนกับเราเข้าไปแก้ไขหรือลบที่ไฟล์เก่าได้
คำสั่งที่จะต้องใช้ในการ แก้ไขหรือลบไฟล์ มีดังนี้
ฟังก์ชัน remove() ใช้ในการลบไฟล์ รูปแบบ คือ remove(file name)
ตัวอย่าง
result = remove("c:\\c_train\\t4.txt"); */ result เป็นชื่อตัวแปร */
ข้อควรจำ ฟังก์ชันนี้ เมื่อลบไฟล์สำเร็จจะให้ค่า 0 หรือ เท็จ กลับมา ถ้าลบไม่สำเร็จ จะให้ค่าอื่นที่ไม่ใช่ 0 ดังนั้นการเขียนโปรแกรม เพื่อตรวจสอบจึงต้องระวัง
ฟังก์ชัน rename()ใช้เปลี่ยนชื่อไฟล์ รูปแบบ คือ rename(old name ,new name)
ตัวอย่าง
result = rename("c:\\c_train\\t4.txt","c:\\c_train\\b4.dat"); */ result เป็นชื่อตัวแปร */
ข้อควรจำ ฟังก์ชันนี้ เมื่อเปลี่ยนชื่อไฟล์สำเร็จจะให้ค่า 0 หรือ เท็จ กลับมา ถ้าเปลี่ยนชื่อไม่สำเร็จ จะให้ค่าอื่นที่ไม่ใช่ 0 ดังนั้นการเขียนโปรแกรม เพื่อตรวจสอบจึงต้องระวัง
การปิดไฟล์
fclose (fp)
fp คือ ตัวแปรพอยน์เตอร์ที่ชี้ไปยังไฟล์สตรีม
ผลลัพธ์ของฟังก์ชั่น fclose() หากสามารถปิดไฟล์ได้สำเร็จจะ return
ค่า 0 กลับ แต่หากไม่สำเร็จจะ return ค่า EOF (โดยปกติคือค่า -1)
1. มีการสร้างแฟ้มข้อมูล(create file)
2. มีการเรียกใช้ข้อมูลจากแฟ้ม (retrieve file) เพื่อทำการปรับปรุงข้อมูล (ค้นหา ลบ เพิ่ม หรือ แก้ไข)
สร้างตัวแปร
เมื่อต้องการสร้างหรือเรียกใช้ไฟล์ข้อมูล ภายในโปรแกรมต้องประกาศตัวแปรที่มีชนิดเป็นแฟ้มข้อมูล
VAR F: file of real;
กำหนดไฟล์ในแผ่นดิสก์(Assign)ให้ตัวแปร
เนื่องจากข้อมูลมักเก็บไว้ในสื่อบันทึก เช่น แผ่นดิสก์ เพื่อให้ทราบว่าตัวแปร F เชื่อมโยงกับแฟ้มข้อมูลใดในแผ่นดิสก์ สามารถทำได้โดยคำสั่ง ASSIGN
การปิดไฟล์
ในการปิดไฟล์จะใช้คำสั่ง
int fclose(FILE *stream);
fclose จะทำการฟลัชบัฟเฟอร์ ทำให้ข้อมูลใดๆ ในบัฟเฟอร์ที่ยังไม่ถูกเขียนลงดิสก์ มีการเขียนลงบนดิสก์ แล้วทำการปิดไฟล์ fclose จะคืนค่า 0 แต่หากมีข้อผิดพลาดเกิดขึ้นจะคืค่า EOF
การอ่านไฟล์
การอ่านไฟล์โดยใช้ fscanf
การอ่านไฟล์โดยใช้ fscanf มีรูปแบบดังนี้
int fscanf(FILE *stream, const char *format, ...);
stream คือตัวแปรพอยน์เตอร์ที่ชี้ ไปยังไฟล์สตรีม
format คือ สตริงกำหนดรูปแบบในการอ่านข้อมูลขึ้นมาจาก ไฟล์ เช่น อ่านข้อมูลเป็นชนิด int ใช้ %d ในสตริงกำหนดรูปแบบ
ตามด้วยแอดเดรสของตัวแปรที่จะเก็บค่าข้อมูลจากการอ่านไฟล์ (จะต้องกําหนดแอดเดรสของตัวแปรโดยใช้สัญลักษณ์ &) โดยอาจมีมากกว่า 1 ตัว
การเขียนไฟล์
ประโยชน์ที่ได้รับจากการสร้างไฟล์แบบเท็กซ์
การใช้ตัวแปรและประมวลผลตัวโปรแกรมทังหมดจะทํางานอยู่ในหน่วยความจําเท่านัน หมายความว่าเมือโปรแกรมทํางานเสร็จข้อมูลต่าง ๆ ก็จะสูญหายไป ถ้าหากต้องการให้ข้อมูลยังคงอยู่สามารถทําได้โดย เขียนข้อมูลผลลัพธ์เก็บเอาไว้ในไฟล์
การแก้ไขหรือลบไฟล์แบบเท็กซ์
เราไม่สามารถเข้าไปแก้ไขหรือลบที่ไฟล์เก่าได้โดยตรง เราต้องสร้างไฟล์ขึ้นมาอีกไฟล์แล้วทำการเขียนสิ่งที่แก้ลงไปในไฟล์ใหม่ แล้วลบไฟล์เก่าทิ้ง แล้วค่อยrenameไฟล์ใหม่ ให้เป็นชื่อไฟล์เก่า ถ้าทำวิธีนี้จะเสมือนกับเราเข้าไปแก้ไขหรือลบที่ไฟล์เก่าได้
คำสั่งที่จะต้องใช้ในการ แก้ไขหรือลบไฟล์ มีดังนี้
ฟังก์ชัน remove() ใช้ในการลบไฟล์ รูปแบบ คือ remove(file name)
ตัวอย่าง
result = remove("c:\\c_train\\t4.txt"); */ result เป็นชื่อตัวแปร */
ข้อควรจำ ฟังก์ชันนี้ เมื่อลบไฟล์สำเร็จจะให้ค่า 0 หรือ เท็จ กลับมา ถ้าลบไม่สำเร็จ จะให้ค่าอื่นที่ไม่ใช่ 0 ดังนั้นการเขียนโปรแกรม เพื่อตรวจสอบจึงต้องระวัง
ฟังก์ชัน rename()ใช้เปลี่ยนชื่อไฟล์ รูปแบบ คือ rename(old name ,new name)
ตัวอย่าง
result = rename("c:\\c_train\\t4.txt","c:\\c_train\\b4.dat"); */ result เป็นชื่อตัวแปร */
ข้อควรจำ ฟังก์ชันนี้ เมื่อเปลี่ยนชื่อไฟล์สำเร็จจะให้ค่า 0 หรือ เท็จ กลับมา ถ้าเปลี่ยนชื่อไม่สำเร็จ จะให้ค่าอื่นที่ไม่ใช่ 0 ดังนั้นการเขียนโปรแกรม เพื่อตรวจสอบจึงต้องระวัง
การปิดไฟล์
fclose (fp)
fp คือ ตัวแปรพอยน์เตอร์ที่ชี้ไปยังไฟล์สตรีม
ผลลัพธ์ของฟังก์ชั่น fclose() หากสามารถปิดไฟล์ได้สำเร็จจะ return
ค่า 0 กลับ แต่หากไม่สำเร็จจะ return ค่า EOF (โดยปกติคือค่า -1)