ภาษาซี
Home
หน่วยที่ 1
ภาษาโปรแกรมคอมพิวเตอร์
ประเภทของภาษาโปรแกรมคอมพิวเตอร์
การพัฒนาโปรแกรม
การเขียนซูโดโค๊ด (Pseudo Code)
การเขียนผังงาน Flowchart
หน่วยที่ 2
โปรแกรมภาษาเบื้องต้น
ตัวแปร
การเก็บข้อมูลของตัวแปร
Code Program C
หน่วยที่ 3
ประเภทของข้อมูล
การประกาศตัวแปรและค่าคงที่
การตั้งชื่อตัวแปรและตัวดำเนินการ
Code Program C
หน่วยที่ 4
คำสั่งเลือกทำแบบทางเดียว
คำสั่งเลือกทำอย่างใดอย่างหนึ่ง
การเลือกทำแบบ Switch
Code Program C
หน่วยที่ 5
คำสั่ง for
คำสั่ง while
คำสั่ง do..while
Code Program C
หน่วยที่ 6
ข้อมูลชนิดอาร์เรย์
ข้อมูลชนิดสตริง
Code Program C
หน่วยที่ 7
แฟ้มข้อมูลในภาษา C
พื้นฐานการทำงานของไฟล์
ฟังก์ชั่นเกี่ยวกับเท็กซ์ไฟล์
Code Program C
ผู้จัดทำ
7.3 ฟังก์ชั่นเกี่ยวกับเท็กซ์ไฟล์
การใช้ฟังก์ชัน putc( ) และ getc( )
1. ฟังก์ชัน putc( )
เป็นฟังชันที่ใช้บันทึกข้อมูลตัวอักขระตัวเดียวลงไปในแฟ้มข้อมูลที่ต้องการ
รูปแบบการใช้ฟังก์ชัน
putc(single_char,fp);
โดยที่
single_char คือ ค่าคงที่ชนิดตัวอักขระตัวเดียว หรือตัวแปรชนิดsingle_character
fp คือ file pointer ของแฟ้มข้อมูลที่ต้องการบันทึกข้อมูลลงไป เพื่อความเข้าใจเกี่ยวกับการใช้งานฟังก์ชัน putc( ) จึงควรศึกษาโปรแกรมตัวอย่างดังนี้
โปรแกรมตัวอย่างที่ 9.1 แสดงการใช้ฟังก์ชัน putc( ) บันทึกข้อมูลตัวอักขระลงแฟ้มข้อมูล
/* file1.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<conio.h> /* บรรทัดที่ 2 */
#include<stdlib.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
FILE *fp; /* บรรทัดที่ 6 */
char ch; /* บรรทัดที่ 7 */
clrscr(); /* บรรทัดที่ 8 */
if(( fp=fopen("a:testdata.dat","w"))==NULL) /* บรรทัดที่ 9 */
{ /* บรรทัดที่ 10 */
printf("Error in open file"); /* บรรทัดที่ 11 */
printf("\007"); /* บรรทัดที่ 12 */
exit(1); /* บรรทัดที่ 13 */
} /* บรรทัดที่ 14 */
printf("Please press <Enter> to quit program.\n"); /* บรรทัดที่ 15 */
printf("\nEnter your sentence : "); /* บรรทัดที่ 16 */
do /* บรรทัดที่ 17 */
{ /* บรรทัดที่ 18 */
ch=getche( ); /* บรรทัดที่ 19 */
putc(ch, fp); /* บรรทัดที่ 20 */
} while(ch !='\r'); /* \r = Enter */ /* บรรทัดที่ 21 */
fclose(fp); /* บรรทัดที่ 22 */
} /* บรรทัดที่ 23 */
หมายเหตุ ก่อน run โปรแกรมต้องใส่แผ่นดิสก์เก็ตต์ไว้ในไดร์ฟ a: เพื่อเก็บแฟ้มข้อมูล testdata.dat ที่สร้างจากโปรแกรมนี้
ผลลัพธ์ที่ได้จากโปรแกรม
ข้อสังเกต
ตัวอักษรที่เป็นสีเข้มที่ปรากฏในผลลัพธ์ที่ได้จากโปรแกรมคือข้อความที่พิมพ์ผ่านคีย์บอร์ด
คำแนะนำ
เราค่อยตรวจสอบต่อไปว่าสามารถเขียนข้อมูลลงแฟ้มได้จริงหรือไม่ ในโปรแกรมตัวอย่างที่ 9.2
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 9.1 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่
1
คำสั่ง #include <stdio.h> สำหรับโปรแกรมนี้ ฟังก์ชันที่เพิ่มขึ้นมาจากโปรแกรมก่อน ๆ ที่เราพบ ที่ต้องใช้ควบคู่กับไฟล์ stdio.h คือ ฟังก์ชัน fopen( ) ในบรรทัดที่ 9
บรรทัดที่ 3
คำสั่ง #include <stdlib.h> จะสนับสนุนการทำงานของฟังก์ชัน exit( ) ในบรรทัดที่ 13
บรรทัดที่ 6
คำสั่ง FILE *fp; รูปแบบการประกาศแฟ้มข้อมูล โดยที่ fp คือตัวชี้ตำแหน่งข้อมูลในแฟ้ม (file pointer) เมื่อใช้คำสั่ง FILE *fp; มีผลทำให้ตัว file pointer ชี้ไปที่ตำแหน่งเริ่มต้นของแฟ้มข้อมูลทันที (ในโปรแกรมนี้จะให้แฟ้มข้อมูลอยู่ที่ไดร์ฟ a: ชื่อ testdata.dat โดยที่ fp นี้จะสามารถชี้ไปยังข้อมูลหรือการค้นข้อมูลจากแฟ้ม
บรรทัดที่ 9
คำสั่งนี้จะสัมพันธ์ และต่อเนื่องกับคำสั่งบรรทัดที่ 6 นั่นคือต้องการเปิดแฟ้มข้อมูลที่ไดร์ฟ a: ชื่อ testdata.dat เพื่อใช้สำหรับบันทึกข้อมูลลงแฟ้ม (write) อย่างเดียว และคำสั่งบรรทัดที่ 9 จะตรวจสอบด้วยว่า fp เท่ากับศูนย์ (NULL) หรือไม่ ถ้า fp เท่ากับศูนย์ แสดงว่าเกิดข้อผิดพลาดในการเปิดไฟล์ หรือไม่สามารถเปิดไฟล์ที่ระบุไว้ได้ ก็จะไปทำคำสั่งใน บรรทัดที่ 10 ถึง 14 นั่นคือ พิมพ์ Error in open file ที่จอภาพ และมีเสียง bell ดังเตือน กรณีที่จะเกิดข้อผิดพลาดได้ เช่น ไม่ได้ใส่แผ่นที่ไดร์ฟ a แต่ถ้าเปิดแฟ้มข้อมูลได้ก็จะให้ค่า fp ที่ไม่เท่ากับศูนย์ และไปทำคำสั่งตั้งแต่บรรทัดที่ 15 จนจบโปรแกรม
บรรทัดที่ 15 และ 16
พิมพ์ข้อความบอกให้ทราบว่า ถ้าต้องการออกจากโปรแกรมให้กด Enter แต่ถ้าจะทำงานต่อให้เติมประโยค และไปทำงานต่อในคำสั่งถัดไป
บรรทัดที่ 17 ถึง 21
คำสั่ง do จะวนรับตัวอักขระที่ผู้ใช้เติมเก็บไว้ที่ตัวแปร ch แล้วนำไปเขียนลงแฟ้มข้อมูล และสุดท้าย ตรวจสอบเงื่อนไขด้วยว่า ผู้ใช้เติม enter หรือไม่ จะได้ออกจากการทำงาน แต่ถ้าไม่ใช่ก็จะวนรับตัวอักขระไปเรื่อย ๆ
บรรทัดที่ 22
คำสั่ง fclose (fp); ปิดแฟ้มข้อมูล
2 ฟังก์ชัน getc( )
เป็นฟังก์ชันที่ใช้อ่านข้อมูลตัวอักขระตัวเดียวขึ้นจากแฟ้มข้อมูลที่ต้องการ
รูปแบบการใช้ฟังก์ชัน
getc(fp);
หรือ
single_char = getc(fp);
โดยที่
single_char
คือ ตัวแปรชนิด single character ที่ใช้เก็บข้อมูลตัวอักขระ ตัวเดียว
fp
คือ file pointer ของแฟ้มข้อมูลที่ต้องการบันทึกข้อมูลลงไป เพื่อความเข้าใจเกี่ยวกับการใช้งานฟังก์ชัน getc( ) จึงควรศึกษาโปรแกรมตัวอย่างดังนี้
หมายเหตุ
ก่อน run โปรแกรมต้องใส่แผ่นดิสก์เก็ตต์ไว้ในไดร์ฟ a: เพื่อเก็บแฟ้มข้อมูล testdata.dat ที่สร้างจากโปรแกรมนี้
ผลลัพธ์ที่ได้จากโปรแกรม
ข้อสังเกต
ข้อมูลที่อ่านได้จากโปรแกรมตัวอย่างที่ 9.2 เป็นข้อมูลที่เราเขียนใส่ไว้ในแฟ้มข้อมูลจากโปรแกรมตัวอย่างที่ 9.1
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 9.2 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
การทำงานของโปรแกรมตัวอย่างที่ 9.2 จะคล้ายกับโปรแกรมตัวอย่างที่ 9.1 คือมีการเปิดแฟ้มข้อมูลขึ้นมา ชื่อ testdata.dat ที่ไดร์ฟ a: แต่เปิดขึ้นมาเพื่ออ่านข้อมูลในแฟ้ม ซึ่งมีการตรวจสอบการเปิดแฟ้มข้อมูลก่อนว่าผิดพลาดหรือไม่ ถ้าผิดพลาดจะพิมพ์ข้อความบอก และมีเสียง bell ดังขึ้น แต่ถ้าเปิดได้ก็จะเข้าไปอ่านข้อมูลในแฟ้มข้อมูลออกมาแสดงเรื่อย ๆ จนกว่าจะจบแฟ้ม ซึ่งคำสั่งบรรทัดที่ 19 (ch != EOF); จะเป็นการตรวจสอบว่าแฟ้มข้อมูลสิ้นสุดหรือไม่ (EOF คือ End Of File)