ประเภทของไฟล์
ไฟล์(File)
คือ ที่เก็บข้อมูลต่าง ๆ ของคอมพิวเตอร์ และในภาษา C นั้นไฟล์ก็จะมีความหมายรวมไปถึงอุปกรณ์ต่างที่ต่อกับเครื่องคอมพิวเตอร์ด้วย เข่น คีย์บอร์ด จอภาพ
การติดต่อกับไฟล์จะต้องผ่านลิจิกคอลอินเตอร์เฟส (Logical Interfaces) ที่เรียกว่าสตรีม (Stream) สตรีมจะช่วยให้ผู้ใช้เขียนโปรแกรมติดต่อกับอุปกรณ์ต่าง ๆ ได้ ซึ่งสตรีมที่ใช้ติดต่อกับไฟล์ ไฟล์จะมีอยู่ 2 ประเภทคือ
Text file
เป็นไฟล์ของตัวอักษร เพราะมีโครงสร้างในการเก็บข้อมูลจะเป็นตัวอักษรไฟล์นั้นจึงไม่สามารถที่จะเก็บข้อมูลที่ค่าตัวเลขจำนวนเต็ม จุดทศนิยม หรือในลักษณะที่เป็นโครงสร้างซึ่งการเก็บ ข้อมูลจะถูกแปลงเป็นเลขฐานสองตามรหัส ASDII
Binary File
เป็นไฟล์ที่เก็บข้อมูลที่อยู่ในรูปแบบของค่าตรง ๆ ซึ่งข้อมูลที่ไฟล์ประเภทนี้จัดเก็บ จะสามารถเป็นได้ทั้งตัวเลขจำนวนเต็ม ตัวเลขทศนิยม ตัวอักษร อาร์เรย์ และข้อมูลแบบโครงสร้าง โดยการจัดเก็บนั้นจะเก็บลงไปตรง ๆ เลย
File Table
ก่อนที่ใช้ไฟล์ได้ผู้ใช้จะต้องรู้จักกับ File Table ซึ่ง File Table คือ ส่วนของหน่วยความจำที่เก็บข้อมูลต่าง ๆที่เกี่ยวกับไฟล์
Text File
ฟังก์ชันที่เกี่ยวกับไฟล์นั่นจะใช้ไลบรารีไฟล์ stdio.h ซึ่งเป็นไลบารีไฟล์มาตรฐานที่ต้องใช้อยู่เสมอ จึงไม่จำเป็นต้องนำเข้าไลบรารีไฟล์อื่นๆ อีก
การเปิดไฟล์
ฟังก์ชั่นในการเปิดไฟล์ คือ ฟังก์ชัน fopen ฟังก์ชันนี้ต้องการพารามิเตอร์ 2ตัว ตัวแรกคือชื่อไฟล์ที่ต้องการจะเปิด ซึ่งอาจจะรวมที่อยู่ของไฟล์ (Path) ในกรณีที่ไฟล์ที่ต้องการใช้ไม่ได้อยู่ที่เดียวกันกับไฟล์โปรแกรม และตัวที่ 2 จะเป็นโหมดในการเปิดซึ่งจะมีโหมดการเปิดอยู่ 3โหมดดังที่แสดง
โหมด
ความหมาย
r
เปิดไฟล์ขึ้นมาเพื่ออ่าน
- ถ้าเปิดสำเร็จ ไฟล์พอยเตอร์จะชี้ไปที่ต้นไฟล์
- ถ้าเปิดไม่ได้ จะส่งค่ากลับเป็นค่า Error (Null)
w
เปิดไฟล์ขึ้นมาเพื่อเขียน
เปิดไฟล์ขึ้นมาเพื่อเขียนต่อ
คือ สตริงที่เป็นชื่อของไฟล์ ซึ่งอาจจะรวมกับที่อยู่ของไฟล์ (Pull) ด้วย ซึ่งไฟล์ที่ใช้จะนามสกุล .dat
การปิดไฟล์ เมื่อเปิดใช้ไฟล์แล้วใช้เสร็จ ก็ควรจะทำการปิดไฟล์ที่ใช้ด้วย ซึ่งฟังก์ชันที่ใช้ปิดไฟล์ คือ ฟังก์ชัน fclose ซึ่งมีรูปแบดังนี้
Fclose ( [ ชื่อไฟล์พอยเตอร์ ] );
ในการเปิดไฟล์และปิดไฟล์นั้นอาจจะเกิดการผิดพลาดขึ้นได้ จนทำให้การเปิดและปิดไฟล์ไม่สมบรูณ์ ถ้าเปิดไฟล์ไม่สำเร็จ ฟังก์ชั่น fopen จะส่งค่ากลับมาเป็นค่า Null และถ้าการปิดไฟล์ไม่สำเร็จจะส่งค่ากลับเป็น EOF ซึ่งจากตรงนี้ทำให้สามารถเขียนโปรแกรมเพื่อตรวจสอบการเปิดและปิดไฟล์ เพื่อป้องกันไม่ให้การทำงานของโปรแกรมผิดพลาด ดังแสดงในโปรแกรม 12-1
การอ่านและเขียนไฟล์
ฟังก์ชันในอ่านและเขียนไฟล์นั้น คือ ฟังก์ชัน fscanf และ fprintf ตามลำดับ fscanf เป็นฟังก์ชันในการอ่านข้อมูลจากไฟล์ ซึ่งการทำงานก็เหมือนกับฟังก์ชัน scan แต่จะต่างกันตรงที่ฟังก์ชัน fscanf จะต้องใช้ไฟล์พอยเตอร์เพื่อชี้ตำแหน่งที่จะอ่านจากไฟล์มีรูปแบบดังนี้
Fscanf ( [ชื่อไฟล์พอยเตอร์ ] , “[ รูปแบบข้อความ ]” , [ที่อยู่ของตัวแปร]);
ในการอ่านข้อมูลนั้น ผู้ใช้ต้องรู้อยู่แล้วว่าข้อมูลที่จะไปอ่าน เก็บอยู่ในลักษณะอย่างไรแล้วจึงเขียนรูปแบบข้อความตามนั้น เช่น
5-10-1936
ชุดคำสั่งการอ่านจะเป็นดังนี้
fscanf( fpData, “%d-%d-%d”, &month, &day, &year);
Fprintf เป็นฟังก์ชันในการเขียนข้อมูลลงไปในไฟล์ ซึ่งการทำงานก็เหมือนกับฟังก์ชัน printf แต่จะใช้ไฟล์พอยเตอร์เป็นตัวชี้ตำแหน่งของไฟล์ที่จะเขียนข้อมูลลงไป เช่น
fprintf (fpOurt , “%d\n%d\n%d”, i , j , k);
เมื่อคำสั่งนี้ทำงานค่าที่เก็บในไฟล์จะเป็นดังนี้
100
200
300
ไฟล์ข้อมูลในภาษา C
การจัดการไฟล์ข้อมูลในภาษา C เราจําเป็นต้องเรียนรู้คําสั่งต่างๆในการ
เปิดไฟล์ปิดไฟล์อ่านไฟล์ฯลฯ
ซึ่งเราจะใช้ไลบรารี “stdio.h” ในการทํางานในเรื่องของไฟล์ได้
ซึ่งไฟล์ที่ได้จะถูกเก็บลงบนหน่วยความจําของเครื่องคอมพิวเตอร์
โดยการอ่านและเขียนไฟล์นี้เราจะต้องใช้ตัวแปรตัวหนึ่งที่เรียกว่า“ไฟล์
พอยเตอร์” (File Pointer)
ในบทนี้เราจะเน้นเฉพาะคําสั่งพื้นฐานในการอ่านและเขียนไฟล
คือ ที่เก็บข้อมูลต่าง ๆ ของคอมพิวเตอร์ และในภาษา C นั้นไฟล์ก็จะมีความหมายรวมไปถึงอุปกรณ์ต่างที่ต่อกับเครื่องคอมพิวเตอร์ด้วย เข่น คีย์บอร์ด จอภาพ
การติดต่อกับไฟล์จะต้องผ่านลิจิกคอลอินเตอร์เฟส (Logical Interfaces) ที่เรียกว่าสตรีม (Stream) สตรีมจะช่วยให้ผู้ใช้เขียนโปรแกรมติดต่อกับอุปกรณ์ต่าง ๆ ได้ ซึ่งสตรีมที่ใช้ติดต่อกับไฟล์ ไฟล์จะมีอยู่ 2 ประเภทคือ
Text file
เป็นไฟล์ของตัวอักษร เพราะมีโครงสร้างในการเก็บข้อมูลจะเป็นตัวอักษรไฟล์นั้นจึงไม่สามารถที่จะเก็บข้อมูลที่ค่าตัวเลขจำนวนเต็ม จุดทศนิยม หรือในลักษณะที่เป็นโครงสร้างซึ่งการเก็บ ข้อมูลจะถูกแปลงเป็นเลขฐานสองตามรหัส ASDII
Binary File
เป็นไฟล์ที่เก็บข้อมูลที่อยู่ในรูปแบบของค่าตรง ๆ ซึ่งข้อมูลที่ไฟล์ประเภทนี้จัดเก็บ จะสามารถเป็นได้ทั้งตัวเลขจำนวนเต็ม ตัวเลขทศนิยม ตัวอักษร อาร์เรย์ และข้อมูลแบบโครงสร้าง โดยการจัดเก็บนั้นจะเก็บลงไปตรง ๆ เลย
File Table
ก่อนที่ใช้ไฟล์ได้ผู้ใช้จะต้องรู้จักกับ File Table ซึ่ง File Table คือ ส่วนของหน่วยความจำที่เก็บข้อมูลต่าง ๆที่เกี่ยวกับไฟล์
Text File
ฟังก์ชันที่เกี่ยวกับไฟล์นั่นจะใช้ไลบรารีไฟล์ stdio.h ซึ่งเป็นไลบารีไฟล์มาตรฐานที่ต้องใช้อยู่เสมอ จึงไม่จำเป็นต้องนำเข้าไลบรารีไฟล์อื่นๆ อีก
การเปิดไฟล์
ฟังก์ชั่นในการเปิดไฟล์ คือ ฟังก์ชัน fopen ฟังก์ชันนี้ต้องการพารามิเตอร์ 2ตัว ตัวแรกคือชื่อไฟล์ที่ต้องการจะเปิด ซึ่งอาจจะรวมที่อยู่ของไฟล์ (Path) ในกรณีที่ไฟล์ที่ต้องการใช้ไม่ได้อยู่ที่เดียวกันกับไฟล์โปรแกรม และตัวที่ 2 จะเป็นโหมดในการเปิดซึ่งจะมีโหมดการเปิดอยู่ 3โหมดดังที่แสดง
โหมด
ความหมาย
r
เปิดไฟล์ขึ้นมาเพื่ออ่าน
- ถ้าเปิดสำเร็จ ไฟล์พอยเตอร์จะชี้ไปที่ต้นไฟล์
- ถ้าเปิดไม่ได้ จะส่งค่ากลับเป็นค่า Error (Null)
w
เปิดไฟล์ขึ้นมาเพื่อเขียน
- ถ้าเปิดสำเร็จ จะได้ไฟล์ว่าง ๆ
- ถ้าเปิดไม่ได้ จะสร้างไฟล์ที่ต้องการให้ใหม่
เปิดไฟล์ขึ้นมาเพื่อเขียนต่อ
- ถ้าเปิดสำเร็จ ไฟล์พอยเตอร์จะชี้ไปที่ปลายไฟล์
- ถ้าเปิดไม่ได้ จะสร้างไฟล์ที่ต้องการให้ใหม่
คือ สตริงที่เป็นชื่อของไฟล์ ซึ่งอาจจะรวมกับที่อยู่ของไฟล์ (Pull) ด้วย ซึ่งไฟล์ที่ใช้จะนามสกุล .dat
การปิดไฟล์ เมื่อเปิดใช้ไฟล์แล้วใช้เสร็จ ก็ควรจะทำการปิดไฟล์ที่ใช้ด้วย ซึ่งฟังก์ชันที่ใช้ปิดไฟล์ คือ ฟังก์ชัน fclose ซึ่งมีรูปแบดังนี้
Fclose ( [ ชื่อไฟล์พอยเตอร์ ] );
ในการเปิดไฟล์และปิดไฟล์นั้นอาจจะเกิดการผิดพลาดขึ้นได้ จนทำให้การเปิดและปิดไฟล์ไม่สมบรูณ์ ถ้าเปิดไฟล์ไม่สำเร็จ ฟังก์ชั่น fopen จะส่งค่ากลับมาเป็นค่า Null และถ้าการปิดไฟล์ไม่สำเร็จจะส่งค่ากลับเป็น EOF ซึ่งจากตรงนี้ทำให้สามารถเขียนโปรแกรมเพื่อตรวจสอบการเปิดและปิดไฟล์ เพื่อป้องกันไม่ให้การทำงานของโปรแกรมผิดพลาด ดังแสดงในโปรแกรม 12-1
การอ่านและเขียนไฟล์
ฟังก์ชันในอ่านและเขียนไฟล์นั้น คือ ฟังก์ชัน fscanf และ fprintf ตามลำดับ fscanf เป็นฟังก์ชันในการอ่านข้อมูลจากไฟล์ ซึ่งการทำงานก็เหมือนกับฟังก์ชัน scan แต่จะต่างกันตรงที่ฟังก์ชัน fscanf จะต้องใช้ไฟล์พอยเตอร์เพื่อชี้ตำแหน่งที่จะอ่านจากไฟล์มีรูปแบบดังนี้
Fscanf ( [ชื่อไฟล์พอยเตอร์ ] , “[ รูปแบบข้อความ ]” , [ที่อยู่ของตัวแปร]);
ในการอ่านข้อมูลนั้น ผู้ใช้ต้องรู้อยู่แล้วว่าข้อมูลที่จะไปอ่าน เก็บอยู่ในลักษณะอย่างไรแล้วจึงเขียนรูปแบบข้อความตามนั้น เช่น
5-10-1936
ชุดคำสั่งการอ่านจะเป็นดังนี้
fscanf( fpData, “%d-%d-%d”, &month, &day, &year);
Fprintf เป็นฟังก์ชันในการเขียนข้อมูลลงไปในไฟล์ ซึ่งการทำงานก็เหมือนกับฟังก์ชัน printf แต่จะใช้ไฟล์พอยเตอร์เป็นตัวชี้ตำแหน่งของไฟล์ที่จะเขียนข้อมูลลงไป เช่น
fprintf (fpOurt , “%d\n%d\n%d”, i , j , k);
เมื่อคำสั่งนี้ทำงานค่าที่เก็บในไฟล์จะเป็นดังนี้
100
200
300
ไฟล์ข้อมูลในภาษา C
การจัดการไฟล์ข้อมูลในภาษา C เราจําเป็นต้องเรียนรู้คําสั่งต่างๆในการ
เปิดไฟล์ปิดไฟล์อ่านไฟล์ฯลฯ
ซึ่งเราจะใช้ไลบรารี “stdio.h” ในการทํางานในเรื่องของไฟล์ได้
ซึ่งไฟล์ที่ได้จะถูกเก็บลงบนหน่วยความจําของเครื่องคอมพิวเตอร์
โดยการอ่านและเขียนไฟล์นี้เราจะต้องใช้ตัวแปรตัวหนึ่งที่เรียกว่า“ไฟล์
พอยเตอร์” (File Pointer)
ในบทนี้เราจะเน้นเฉพาะคําสั่งพื้นฐานในการอ่านและเขียนไฟล