9.6.1 ฟังก์ชัน fprintf( )
เป็นฟังก์ชันที่ใช้บันทึกข้อมูล (write) ลงแฟ้มโดยสามารถจัดรูปแบบข้อมูลที่ต้องการบันทึกได้คล้ายกับฟังก์ชัน printf( ) แตกต่างกันตรงที่ printf( ) เป็นฟังก์ชันที่ใช้พิมพ์ผลลัพธ์ออกทางจอภาพแต่ฟังก์ชัน fprintf( ) ใช้บันทึกข้อมูลลงแฟ้ม
รูปแบบการใช้
เป็นฟังก์ชันที่ใช้บันทึกข้อมูล (write) ลงแฟ้มโดยสามารถจัดรูปแบบข้อมูลที่ต้องการบันทึกได้คล้ายกับฟังก์ชัน printf( ) แตกต่างกันตรงที่ printf( ) เป็นฟังก์ชันที่ใช้พิมพ์ผลลัพธ์ออกทางจอภาพแต่ฟังก์ชัน fprintf( ) ใช้บันทึกข้อมูลลงแฟ้ม
รูปแบบการใช้
fprintf (fp,control string,variable list);
โดยที่
fp คือ ตัวชี้ตำแหน่งในแฟ้มข้อมูล
control string คือ รหัสรูปแบบข้อมูลและรหัสควบคุมใช้เหมือนฟังก์ชัน printf( ) เช่น สามารถระบุชนิดของข้อมูลที่ต้องการบันทึกลงแฟ้มเป็น %d, %c, %f, %s หรือใช้รหัสควบคุม \n หรือ \t ก็ได้
variable list คือ ค่าคงที่ ตัวแปร หรือนิพจน์ที่จะเขียนลงแฟ้มข้อมูล ถ้าเป็นค่าคงที่สตริงต้องเขียนอยู่ภายในเครื่องหมาย “…”
ตัวอย่างที่ 9.4 แสดงการใช้ฟังก์ชัน fprintf( )
int x=15; float f=4.562; char str[20]=”Computer”;
FILE *fptr;
fprintf(fptr, “%d \t %f \t %s \n”,x,f,str);
โดยที่
fptr คือ ตัวชี้ตำแหน่งในแฟ้มข้อมูล (file pointer)
x คือ ตัวแปร int เก็บข้อมูลตัวเลข 15 ซึ่งจะถูกบันทึกลงแฟ้มเป็น field ที่ 1
f คือ ตัวแปร float เก็บข้อมูลตัวเลข 4.562 ซึ่งจะถูกบันทึกลงแฟ้มเป็น field ที่ 2
str คือ ตัวแปร string เก็บข้อความว่า “Computer” ซึ่งจะถูกบันทึกลงแฟ้มเป็น field ที่ 3
\t คือ รหัสควบคุมที่สั่งให้ tab ไป 1 ครั้ง ก่อนที่จะบันทึกข้อมูล field ต่อไป
\n คือ รหัส new line ใช้สั่งให้ขึ้นบรรทัดใหม่ในแฟ้มข้อมูล
9.6.2 ฟังก์ชัน fscanf( )
เป็นฟังก์ชันที่ใช้อ่านข้อมูล (read) ขึ้นจากแฟ้มข้อมูลแล้วนำมาเก็บไว้ในตัวแปรที่ต้องการได้โดยมีการทำงานคล้ายกับฟังก์ชัน scanf( ) แตกต่างกันตรงที่ฟังก์ชัน fscanf( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากแฟ้มข้อมูลแต่ฟังก์ชัน scanf( ) เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดแล้วไปเก็บไว้ในตัวแปรที่ต้องการ
เป็นฟังก์ชันที่ใช้อ่านข้อมูล (read) ขึ้นจากแฟ้มข้อมูลแล้วนำมาเก็บไว้ในตัวแปรที่ต้องการได้โดยมีการทำงานคล้ายกับฟังก์ชัน scanf( ) แตกต่างกันตรงที่ฟังก์ชัน fscanf( ) เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากแฟ้มข้อมูลแต่ฟังก์ชัน scanf( ) เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดแล้วไปเก็บไว้ในตัวแปรที่ต้องการ
รูปแบบการใช้
fscanf( fp, control string, variable list);
โดยที่
fp คือ ตัวชี้ตำแหน่งในแฟ้มข้อมูล
control string คือ รหัสรูปแบบข้อมูลใช้เหมือนฟังก์ชัน scanf( ) เช่น สามารถระบุชนิดของข้อมูลที่ต้องการอ่านข้อมูลจากแฟ้มเป็น %d,%c,%f,%s และยังสามารถใช้รหัส new line
หรือ \n ได้
variable list คือ ชื่อตัวแปรที่ใช้เก็บข้อมูลที่อ่านมาจากแฟ้มข้อมูล โดยจะต้องระบุเครื่องหมาย & (ampersand) นำหน้าชื่อตัวแปรด้วย ยกเว้นตัวแปรสตริงเท่านั้นที่ไม่ต้องมีเครื่องหมาย &
ตัวอย่างที่ 9.5 แสดงการใช้ฟังก์ชัน fscanf( )
int i; float f; char str[80];
FILE *fptr;
fscanf( fptr,”%d %f %s \n”,&i,&f,str);
โดยที่
i คือ ตัวแปรชนิด int ใช้เก็บข้อมูลที่อ่านจากแฟ้ม field ที่ 1
f คือ ตัวแปรชนิด float ใช้เก็บข้อมูลที่อ่านจากแฟ้ม field ที่ 2
str คือ ตัวแปรสตริง ใช้เก็บข้อมูลที่อ่านจากแฟ้ม field ที่ 3
fptr คือ file pointer ใช้ชี้ตำแหน่งข้อมูลในแฟ้ม
เพื่อความเข้าใจเกี่ยวกับการใช้ฟังก์ชัน fprintf( ) และฟังก์ชัน fscanf( ) มากยิ่งขึ้น ให้ศึกษาจากโปรแกรมตัวอย่างดังต่อไปนี้
โปรแกรมตัวอย่างที่ 9.3 แสดงการใช้ฟังก์ชัน fprintf( ) บนทึกข้อมูลลงในแฟ้ม 1 record
/* wdataf.c */ | ||||
หมายเหตุ ถ้าต้องการเก็บแฟ้มข้อมูลไว้ในไดร์ฟ a: ก่อน run โปรแกรมต้องใส่แผ่นดิสก์เก็ตต์ไว้ในไดร์ฟ a: เพื่อเก็บแฟ้มข้อมูลที่สร้างจากโปรแกรมนี้
ผลลัพธ์ที่ได้จากโปรแกรม
คำแนะนำ เราค่อยตรวจสอบต่อไปว่าสามารถเขียนข้อมูลลงแฟ้มได้จริงหรือไม่ ในโปรแกรมตัวอย่างที่ 9.5
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 9.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 9.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
การทำงานของโปรแกรมตัวอย่างนี้ จะให้เปิดแฟ้มข้อมูลขึ้นมาเพื่อเขียน โดยให้ผู้ใช้งานตั้งชื่อแฟ้มเอง แต่ให้มีนามสกุล .dat เช่น a:test1.dat คือ ตั้งชื่อแฟ้ม test.dat เก็บไว้ที่ไดร์ฟ a ถ้าเปิดไม่ได้ก็จะพิมพ์ข้อผิดพลาด และมีเสียง bell ดัง บอกให้ทราบ ซึ่งถ้าเปิดได้แล้วจะนำค่าของตัวแปร x, f และ ตัวแปร str เขียนลงในแฟ้มข้อมูลดังกล่าว 1 record ตามคำสั่งอยู่ที่บรรทัดที่ 18 ซึ่งการเขียนข้อมูลจะมีการเว้นช่องว่างในแต่ละฟิลด์ เนื่องจากมีการใช้รหัส \t และ \n ทำให้เกิดความสะดวกในการอ่านข้อมูลจากแฟ้มขึ้นมาใช้งานต่อไป เขียนเสร็จแล้วก็จะใช้ฟังก์ชัน fclose( ) เพื่อปิดแฟ้มข้อมูล ในบรรทัดที่ 19
โปรแกรมตัวอย่างที่ 9.4 แสดงการใช้ฟังก์ชัน fprintf( ) บันทึกข้อมูลลงในแฟ้มควบคู่กับคำสั่ง for
/* wdataf2.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำแนะนำ เราค่อยตรวจสอบต่อไปว่าสามารถเขียนข้อมูลลงแฟ้มได้จริงหรือไม่ ในโปรแกรมตัวอย่างที่ 9.6
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 9.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 9.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
โปรแกรมตัวอย่างที่ 9.4 จะทำงานคล้ายกับโปรแกรมตัวอย่างที่ 9.3 คือเปิดแฟ้มข้อมูลขึ้นมาเพื่อเขียน เช่น เขียนที่ไดร์ฟ a:test2.dat แต่จะเขียนข้อมูลมากกว่า 1 record โดยใช้คำสั่ง for ช่วย ซึ่งคำสั่งอยู่บรรทัดที่ 19 ถึง 23 คือเขียนค่าตัวแปร x, f และ str ลงในแฟ้ม และแต่ละ record ที่เขียนจะมีการคำนวณเปลี่ยนค่าตัวแปร x และ f ด้วย เมื่อเขียนเสร็จแล้วก็จะปิดแฟ้มข้อมูล ด้วยฟังก์ชัน fclose( ) ในคำสั่งบรรทัดที่ 24
โปรแกรมตัวอย่างที่ 9.5 แสดงการใช้ฟังก์ชัน fscanf( ) อ่านข้อมูลจากแฟ้ม 1 record
/* rdataf.c */ | ||||
หมายเหตุ ก่อน run โปรแกรมต้องใส่แผ่นดิสก์เก็ตต์ไว้ในไดร์ฟ a: ที่มีแฟ้ม test1.dat ที่เคยสร้างไว้แล้ว เพื่อให้โปรแกรมอ่านข้อมูลจากแฟ้มนี้
ผลลัพธ์ที่ได้จากโปรแกรม
ข้อสังเกต ข้อมูลที่อ่านได้จากโปรแกรมตัวอย่างที่ 9.5 เป็นข้อมูลที่เราเขียนใส่ไว้ในแฟ้มข้อมูลจากโปรแกรมตัวอย่างที่ 9.3
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 9.5 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 9.5 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
โปรแกรมตัวอย่างนี้ จะเปิดแฟ้มข้อมูลขึ้นมาเพื่ออ่านข้อมูล โดยให้ผู้ใช้วนเติมชื่อแฟ้มข้อมูลที่ต้องการอ่าน เช่น เราจะอ่านแฟ้มที่บันทึกข้อมูลได้จากโปรแกรมตัวอย่างที่ 9.3 คือ a:test1.dat ซึ่งคำสั่งบรรทัดที่ 18 อ่านข้อมูลขึ้นมาเก็บไว้ที่ตัวแปร x, f, c,str1, str2 และตัวแปร str3 แล้วทำงานคำสั่งบรรทัดที่ 19 คือนำค่าที่เก็บไว้ในตัวแปรดังกล่าวแสดงออกที่จอภาพ หลังจากทำงานเสร็จสิ้นแล้ว จะปิดแฟ้มข้อมูลด้วยฟังก์ชัน fclose( ) ในคำสั่งบรรทัดที่ 20
โปรแกรมตัวอย่างที่ 9.6 แสดงการใช้ฟังก์ชัน fscanf( ) อ่านข้อมูลจากแฟ้ม ควบคู่กับคำสั่ง for
/* rdataf2.c */ | ||||
หมายเหตุ ก่อน run โปรแกรมต้องใส่แผ่นดิสก์เก็ตต์ไว้ในไดร์ฟ a: ที่มีแฟ้ม test2.dat ที่เคยสร้างไว้แล้ว เพื่อให้โปรแกรมอ่านข้อมูลจากแฟ้มนี้
ผลลัพธ์ที่ได้จากโปรแกรม
ข้อสังเกต ข้อมูลที่อ่านได้จากโปรแกรมตัวอย่างที่ 9.6 เป็นข้อมูลที่เราเขียนใส่ไว้ในแฟ้มข้อมูลจากโปรแกรมตัวอย่างที่ 9.4
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 9.6 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 9.6 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
โปรแกรมตัวอย่างนี้จะทำงานคล้ายกับโปรแกรมตัวอย่างที่ 9.5 จะเปิดแฟ้มข้อมูลขึ้นมาอ่านข้อมูล โดยให้ผู้ใช้งานเติมชื่อแฟ้มข้อมูลที่ต้องการอ่าน เช่น เราจะค้นแฟ้มที่บันทึกข้อมูลได้จากโปรแกรมที่ 9.4 คือ a:test2.dat ซึ่งข้อมูลมีอยู่ทั้งหมด 5 record โดยใช้คำสั่ง for ช่วย ซึ่งคำสั่งอยู่บรรทัดที่ 19 ถึง 22 โดยที่คำสั่งบรรทัดที่ 20 จะอ่านข้อมูลขึ้นมาเก็บไว้ที่ตัวแปร x, f, c, str1, str2 และตัวแปร str3 แล้วนำค่าที่เก็บไว้ในตัวแปรดังกล่าวแสดงออกที่จอภาพ ตามลำดับ หลังจากทำงานเสร็จสิ้นแล้วจะปิดแฟ้มข้อมูลด้วยฟังก์ชัน fclose( ) ในคำสั่งบรรทัดที่ 23
0 ความคิดเห็น:
แสดงความคิดเห็น