View
216
Download
0
Category
Preview:
DESCRIPTION
การเปิดเเละปิดข้อมูล - วรพล+มนัส การทำงานกับ Text File การทำงานกับ Binary File - ณัฐพงษ์+ ธัญภัทร แบบฝึกหัด(เฉลย) - กุลณัฐ+สถาพร
Citation preview
บทท 10 . การเปดและปดแฟมขอมล
10.1.1 แฟมขอมลแบบเทกซ ในการสรางแฟมขอมลแบบเทกซนนมหวขอสำาคญๆ
ดงน 1. โหมดทใชในการสรางแฟมขอมลแบบเทกซ 2. ฟงกชนทสำาคญในการใชงานแฟมขอมลแบบเทกซ
1. โหมดทใชในการสรางแฟมขอมลแบบเทกซ ในการสรางแฟมขอมลหรอเปดแฟมขอมลแบบเทกซนน จำาเปนอยางยงทจะตองใชควบคกบโหมดการใชงานซงมลกษณะคลายกนกบโหมดของการสรางหรอเปดแฟมขอมลแบบไบนาร ซงจะกลาวถงแฟมขอมลแบบไบนารในลำาดบตอไป สำาหรบโหมดทใชในการสรางและเปดแฟมขอมลแบบเทกซนน มโหมดทสำาคญๆ ดงตอไปน ตารางท 10.1 รปแบบโหมดทใชในการสรางแฟมขอมลแบบเทกซ
รปแบบการเปดแฟมขอมล
ความหมาย
r r+ a
a+ w
w+
เปดแฟมขอมลเพออานอยางเดยว เปดแฟมขอมลเพออานและเขยนขอมล เปดแฟมขอมลเพอเขยนขอมลตอทายขอมลเดม เปดแฟมขอมลเพออานและเขยนขอมลตอทายขอมลเดม เปดแฟมขอมลเพอเขยนขอมลทบในแฟมขอมลเดม หากไมมแฟมขอมลทระบ จะ
สรางแฟมขอมลขนมาใหม เปดแฟมขอมลเพออานขอมลและเขยนขอมลใหมทบขอมลเดม หากไมมแฟมขอมลทระบ จะสรางแฟมขอมลขนมาใหม
2. ฟงกชนทสำาคญในการใชในการเปดและปดงานแฟมขอมลแบบเทกซ
2.1 ฟงกชนเปดแฟมขอมล 2.2 ฟงกชนปดแฟมขอมล
2.1 ฟงกชนเปดแฟมขอมล ในการอานแฟมขอมลแบบเทกซ จะตองทำาการเปด
แฟมขอมลกอนทจะนำาขอมลมาใชฟงกชนทใชในการเปดแฟมขอมล คอฟงกชน fopen() มรปแบบการใชฟงกชนดงน
FILE *ชอตวแปรไฟลพอยนเตอร; ชอตวแปรไฟลพอยนเตอร = fopen(“ชอแฟมขอมล”,”รปแบบการเปดแฟมขอมล”);
ภาพท 10.1 รปแบบการใชฟงกชนเปดแฟมขอมลแบบเทกซ
จากภาพท 10.1 อธบายการทำางานของฟงกชนไดดงน FILE หมายถง คำาบงคบใชสำาหรบประกาศตวแปรไฟลพอยนเตอร ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา
เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
fopen() หมายถง ชอฟงกชนทใชสำาหรบเปดแฟมขอมลขนมาใชงาน
ชอแฟมขอมล หมายถง ชอของแฟมขอมลทตองการเปดขนมาใชงานหากมเสนทางของการจดเกบแฟมขอมลใหระบเสนทางใหชดเจน ชอแฟมขอมลตองอยภายใตเครองหมายคำาพดค “(Double quote)
รปแบบการเปดแฟมขอมล หมายถง รปแบบทใชสำาหรบเปดแฟมขอมลขนมาใชงาน เชน เปดแฟมขอมลเพออานขอมลอยางเดยว เปดแฟมขอมลเพอเขยน เปนตน รปแบบการเปดแฟมขอมล ตองอยภายใตเครองหมายคำาพดค “
(Double quote) เชนเดยวกบชอแฟมขอมล คนระหวางชอแฟมขอมลกบรปแบบการเปดแฟมขอมลดวยเครองหมายคอมมา (,)
ตวอยางการเปดแฟมขอมล
1 FILE *fp; 2 fp = fopen(“test.txt”,”r”); หรอ 3 FILE *fp; 4 fp = fopen (“D:\c_data\exercise.txt”,”at”);
ภาพท 10.2 การเปดแฟมขอมลแบบเทกซ
2.2 ฟงกชนปดแฟมขอมล ในการอานแฟมขอมลแบบเทกซ จะตองทำาการเปดแฟม
ขอมลกอนทจะทำาการอาน เมออานขอมลเรยบรอยแลว และเลกใชงาน จะตองทำาการปดแฟมขอมล โดยฟงกชนทใชในการปดแฟมขอมล คอ fclose() มรปแบบการใชฟงกชนดงน
fclose(ชอตวแปรไฟลพอยนเตอร);
ภาพท 10.5 รปแบบการใชฟงกชนปดแฟมขอมลแบบเทกซ
จากภาพท 10.5 อธบายรปแบบการใชฟงกชนปดแฟมขอมลแบบเทกซไดดงน fclose() หมายถง ชอฟงกชนทใชสำาหรบปดแฟมขอมล ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา
เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
ตวอยางการใชฟงกชน fclose() ไดแสดงการใชงานไวแลวในตวอยางท 10.1 และ 10.2
10.1.2 แฟมขอมลแบบไบนาร จากทกลาวมาจะเหนวาแฟมขอมลแบบไบนารนน
เปนแฟมขอมลแบบเลขฐานสอง โดยขอมลทถกจดเกบในแฟมประเภทนจะอยในรปของเลขฐานสอง ทำาใหไมสามารถเปดอานขอมลโดยใชโปรแกรมอานขอความได แฟมขอมลประเภทนสามารถเขาถงขอมลแบบสมได
ในการสรางแฟมขอมลแบบไบนารนนมหวขอสำาคญๆ ดงน
1. โหมดทใชในการสรางแฟมขอมลแบบไบนาร 2. ฟงกชนทสำาคญในการใชงานแฟมขอมลแบบ
ไบนาร
1. โหมดทใชในการสรางแฟมขอมลแบบไบนาร ในการสรางแฟมขอมลหรอเปดแฟมขอมลแบบไบนารนน
จำาเปนอยางยงทจะตองใชควบคกบโหมดการใชงานซงมลกษณะคลายกนกบโหมดของการสรางหรอเปดแฟมขอมลแบบเทกซ สำาหรบโหมดทใชในการสรางและเปดแฟมขอมลแบบไบนารนน มโหมดทสำาคญๆดงตอไปน
ตารางท 10.2 โหมดการสรางและเปดแฟมขอมลแบบไบนารโหมดการใช
งานอธบาย
rb เปดแฟมขอมลแบบไบนารเพอทำาการอานขอมลจากแฟมขอมล
rb+ เปดแฟมขอมลแบบไบนารเพอทำาการอานและบนทกขอมล
wb เปดแฟมขอมลแบบไบนารเพอทำาการบนทกขอมล
wb+ สรางแฟมขอมลแบบไบนารเพอทำาการอานและบนทกขอมล หรอสรางแฟมขอมลใหมหากไมพบแฟมขอมลเดม
ab เปดแฟมขอมลแบบไบนารเพอทำาการบนทกขอมลตอทายขอมลเดม
ab+ เปดแฟมขอมลแบบไบนารเพอทำาการอานและบนทกขอมลตอทายขอมลเดม หรอสรางแฟมขอมลใหม หากไมพบแฟมขอมลเดม
2. ฟงกชนทสำาคญในการใชงานเปดและปดแฟมขอมลแบบไบนาร
2.1 ฟงกชนเปดแฟมขอมล 2.2 ฟงกชนปดแฟมขอมล
หนวยท 10การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
2.1 ฟงกชนเปดแฟมขอมลในการอานแฟมขอมลแบบไบนาร จะตองทำาการเปด
แฟมขอมลกอนทจะนำาขอมลมา ใชงาน เหมอนกบแฟมขอมลแบบเทกซ ฟงกชนทใชในการเปดแฟมขอมล คอฟงกชน fopen() มรปแบบการใชฟงกชนดงน
FILE *ชอตวแปรไฟลพอยนเตอร; ชอตวแปรไฟลพอยนเตอร = fopen(“ชอแฟมขอมล”,”รปแบบการเปดแฟมขอมล”);
ภาพท 10.6 รปแบบการใชฟงกชนเปดแฟมขอมลแบบไบนาร
จากภาพท 10.6 อธบายการทำางานของฟงกชนไดดงนFILE หมายถง คำาบงคบใชสำาหรบประกาศตวแปร ไฟลพอยนเตอร ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา
เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
fopen() หมายถง ชอฟงกชนทใชสำาหรบเปดแฟมขอมลขนมาใชงาน
ชอแฟมขอมล หมายถง ชอของแฟมขอมลทตองการเปดขนมาใชงานหากมเสนทางของการจดเกบแฟมขอมลใหระบเสนทางใหชดเจน ชอแฟมขอมลตองอยภายใตเครองหมายคำาพด ค “ (Double quote)
การจดการแฟมขอมล 15
หนวยท 10การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
รปแบบการเปดแฟมขอมล หมายถง รปแบบทใชสำาหรบเปดแฟมขอมลขนมาใชงาน เชน เปดแฟมขอมลเพออานขอมลอยางเดยว เปดแฟมขอมลเพอเขยน เปนตน รปแบบการเปดแฟมขอมล ตองอยภายใตเครองหมายคำาพดค “(Double quote) เชนเดยวกบชอแฟมขอมล คนระหวางชอแฟมขอมลกบรปแบบการเปดแฟมขอมลดวยเครองหมายคอมมา (,)
ในการอานขอมลจากแฟมขอมล และการเขยนขอมลลงแฟมขอมลนน มฟงกชนทสำาคญดงตอไปน
10.2.1 ฟงกชนอานและเขยนขอมลครงละ 1 อกขระ
1. ฟงกชนอานขอมลประกอบดวยฟงกชน getc() และ fgetc() 2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fputc()
การจดการแฟมขอมล 15
10.2 การทำางานกบ Text File
หนวยท 10การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
10.2.2 ฟงกชนอานและเขยนขอมลเปนชดอกขระหรอสตรง
1. ฟงกชนอานขอมล ประกอบดวยฟงกชน fgets()
2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fputs()
10.2.3 ฟงกชนอานและเขยนขอมลเปนอกขระ ชดอกขระหรอตวเลข
1. ฟงกชนอานขอมล ประกอบดวยฟงกชน fscanf()
2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fprintf()
10.2.1 ฟงกชนอานและเขยนขอมลครงละ 1 อกขระ
1. ฟงกชนอานขอมลประกอบดวยฟงกชน getc() และ fgetc()
(1) ฟงกชน getc() เปนฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลครงละ 1 อกขระ ซงอกขระนนอาจเปนตวเลข ตวอกษร หรอสญลกษณพเศษ มรปแบบการใชฟงกชนดงน
ชอตวแปร = getc(ชอตวแปรไฟลพอยนเตอร);
การจดการแฟมขอมล 15
หนวยท 10การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
ภาพท 10.9 รปแบบการใชฟงกชน getc()
จากภาพท 10.9 อธบายรปแบบการใชฟงกชน getc() ไดดงน
ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลอกขระทอานจากแฟมขอมลครงละ 1 ตว
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
การจดการแฟมขอมล 15
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
(2) ฟงกชน fgetc() เปนฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลครงละ 1 อกขรเชนเดยวกบฟงกชน getc() มรปแบบการใชฟงกชนดงน
ชอตวแปร = fgetc (ชอตวแปรไฟลพอยนเตอร);
ภาพท 10.10 รปแบบการใชฟงกชน fgetc()
จากภาพท 10.10 อธบายรปแบบการใชฟงกชน fgetc() ไดดงน
ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลอกขระทอานจากแฟมขอมลครงละ 1 ตว
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
การจดการแฟมขอมล 16
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fputc()
(1) ฟงกชน fputc() เปนฟงกชนทใชสำาหรบเขยนขอมลลงแฟมขอมลครงละ 1 อกขระ มรปแบบการใชฟงกชนดงน
fputc(ชอตวแปรหรอคาคงทอกขระ, ชอตวแปรไฟลพอยนเตอร);
ภาพท 10.11 รปแบบการใชฟงกชน fputc()
จากภาพท 10.8 อธบายรปแบบการใชฟงกชน fputc() ไดดงน
ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลอกขระหรอคาคงทอกขระทจะเกบลงแฟมขอมล
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
การจดการแฟมขอมล 16
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
การใชฟงกชนเพออานและเขยนขอมลครงละ 1 อกขระ แสดงไดดงตวอยางท 10.3
การจดการแฟมขอมล 16
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
1. ฟงกชนอานขอมล ประกอบดวยฟงกชน fgets()
(1) ฟงกชน fgets() เปนฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลเปนชดอกขระ มรปแบบการใชฟงกชนดงน
fgets (ตวแปรชดอกขระหรอสตรง, จำานวนอกขระ, ชอตวแปรไฟลพอยนเตอร);
ภาพท 10.13 รปแบบการใชฟงกชน fget
จากภาพท 10.10 อธบายรปแบบการใชฟงกชน fgets() ไดดงน
ตวแปรชดอกขระหรอสตรง หมายถง ตวแปรชดอกขระหรอสตรงทใชสำาหรบเกบขอความ
จำานวนอกขระ หมายถง จำานวนอกขระทตองการอานจากแฟมขอมล
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
การจดการแฟมขอมล 19
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fputs()
(1) ฟงกชน fputs() เปนฟงกชนทใชสำาหรบเขยนขอมลลงแฟมเปนชดอกขระมรปแบบในการใชฟงกชน ดงน
fputs(ตวแปรหรอคาคงทชดอกขระ, ชอตวแปรไฟลพอยนเตอร);
ภาพท 10.14 รปแบบการใชฟงกชน fputs()
จากภาพท 10.13 อธบายรปแบบการใชฟงกชน fputs() ไดดงน
ตวแปรหรอคาคงทชดอกขระ หมายถง ชอตวแปรทเกบชดอกขระหรอคาคงทชดอกขระ ทตองการนำาไปจดเกบในแฟมขอมล
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
2.3.3 ฟงกชนอานและเขยนขอมลเปนอกขระชดอกขระหรอตวเลข
การจดการแฟมขอมล 20
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
1. ฟงกชนอานขอมล ประกอบดวยฟงกชน fscanf()
(1) ฟงกชน fscanf() เปนฟงกชนทใชสำาหรบอานขอมล มรปแบบการใชฟงกชนดงน
ภาพท 10.15 รปแบบ การใช
ฟงกชน fscanf () จากภาพท 10.15 อธบายรปแบบการใชฟงกชน fscanf() ไดดงน
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรแฟมขอมลทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
รหสรปแบบ หมายถง รหสรปแบบทใชแทนขอมล
การจดการแฟมขอมล 20
fscanf(ชอตวแปรไฟลพอยนเตอร, “รหสรปแบบ”, &ชอตวแปร);
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมล จะตองมเครองหมายแอมเพอแซนด(&) นำาหนา เหมอนกบการใชฟงกชน scanf()
การจดการแฟมขอมล 20
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fprintf()
(1) ฟงกชน fprintf() เปนฟงกชนทใชสำาหรบเขยนขอมลลงแฟม มรปแบบการใชฟงกชนดงน
fprintf (ชอตวแปรไฟลพอยนเตอร, “รหสรปแบบ”, &ชอตวแปร);
ภาพท 10.16 รปแบบการใชฟงกชน fprintf ()
จากภาพท 10.16 อธบายรปแบบการใชฟงกชน fscanf() ไดดงน
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรแฟมขอมลทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
รหสรปแบบ หมายถง รหสรปแบบทใชแทนขอมล
ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลทตองการบนทกลงแฟมขอมล
การจดการแฟมขอมล 23
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
ฟงกชนอานและเขยนขอมล 10.3.1 ฟงกชนทใชอานขอมลจากแฟมขอมล ประกอบดวยฟงกชน fread() 10.3.2 ฟงกชนทใชเขยนขอมลลงแฟมขอมล ประกอบดวยฟงกชน fwrite() 10.3.3 ฟงกชนทใชในการเขาถงขอมลทตองการ ประกอบดวยฟงกชน fseek()
10.3.1 ฟงกชนทใชอานขอมลจากแฟมขอมล ประกอบดวยฟงกชน fread()
เปนฟงกชนทใชอานขอมลจากแฟมขอมลแบบไบนาร มรปแบบการใชงานดงน
fread(ตำาแหนงของตวแปร, size of (ตวแปรโครงสรางขอมล), 1,
ชอตวแปรไฟลพอยนเตอร);ภาพท 10.18 รปแบบการใชฟงกชน fread()
การจดการแฟมขอมล 23
10.3 การทำางานกบ Binary File
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
จากภาพท 10.18 อธบายรปแบบการใชฟงกชน fread() ไดดงน ตำาแหนงของตวแปร หมายถง ตำาแหนงของตวแปรทตองการอานขอมล ชอตวแปรโครงสรางขอมล หมายถง ตวแปรโครงสรางขอมล
เรคคอรดทตองการอาน ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
การจดการแฟมขอมล 23
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
10.3.2 ฟงกชนทใชเขยนขอมลลงแฟมขอมล ประกอบดวยฟงกชน fwrite()
1. ฟงกชน fwrite() เปนฟงกชนทใชเขยนขอมลลงแฟมขอมลแบบไบนาร มรปแบบการ
ใชงานดงน
fwrite(ตำาแหนงของตวแปร, sige of (ตวแปรโครงสรางขอมล), 1,
ชอตวแปรไฟลพอยนเตอร);ภาพท 10.19 รปแบบการใชฟงกชน fwrite()
จากภาพท 10.19 อธบายรปแบบการใชฟงกชน fwrite() ไดดงน ตำาแหนงของตวแปร หมายถง ตำาแหนงของตวแปรทตองการเขยนขอมล ชอตวแปรโครงสรางขอมล หมายถง ตวแปรโครงสรางขอมล
เรคคอรดทตองการเขยนชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา
เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
การจดการแฟมขอมล 24
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
10.3.3 ฟงกชนทใชในการเขาถงขอมลทตองการ ประกอบดวยฟงกชน fseek() 1. ฟงกชน fseek() เปนฟงกชนทใชในการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงของแฟมขอมล ไปยงตำาแหนงทระบในแฟมขอมล มรปแบบการใชงานดงน
ภาพท 10.21 รปแบบ การใช
ฟงกชน fseek()
จากภาพท 10.21 อธบายรปแบบการใชฟงกชน fseek() ไดดงน
ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)
ตำาแหนงของเรคคอรด หมายถง ตำาแหนงของเรคคอรดทตองการใหไฟลพอยนเตอร หรอตวชตำาแหนงแฟมขอมลชไป ซงเปนไดทงคาบวกและคาลบ
รปแบบการเคลอนยายตวชตำาแหนง หมายถง รปแบบการเคลอนยายของไฟลพอยนเตอรหรอตวชตำาแหนงแฟมขอมลโดยรปแบบ
การจดการแฟมขอมล 1
fseek(ชอตวแปรไฟลพอยนเตอร, ตำาแหนงของเรคคอรด,
รปแบบการเคลอนยายตวชตำาแหนง);
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
การเคลอนยายตวชตำาแหนงม 3 รปแบบ คอ1. SEEK_SET คอการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงไปยงตนแฟมขอมล เพอทำาการอานหรอบนทกขอมล 2. SEEK_END คอการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงไปยงทายแฟมขอมล เพอทำาการอานหรอบนทกขอมล
3. SEEK_CUR คอการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงไปยงเรคคอรดปจจบน เพอทำาการอานหรอบนทกขอมล
ลกษณะของไฟลจะเปนขอมลแตละไบตมาตอเรยงกนไปจนจบดวยรหสสนสดไฟล EOF (End -Of - File) ประเภทของไฟลถาแบงตามลกษณะการจดเกบขอมลจะมสองประเภทคอไฟลตวอกษร หรอเทกซไฟล ซงเปนการเกบรหสแอสกของตวอกขระ ดงนนไฟลประเภทนสามารถใชโปรแกรมอดเตอรหรอ Notepad เปดขนมาอานได สวนไฟลอกประเภทหนงเรยกวาไฟลขอมลหรอไบนารไฟลซงจะเกบขอมลในรปแบบของเลขฐานสองตามทผใช
การจดการแฟมขอมล 1
สรปทาย
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
กำาหนด ไมสามารถเปดขนมาอานไดรเรอง ในการกระทำาใดๆกบไฟลนนจะตองกระทำาสามขนตอน คอ เปดไฟล อานหรอเขยนไฟล และปดไฟลเปนขนตอนสดทาย โดยในภาษาซมฟงกชนทใชกระทำากบไฟลมากมายขนกบชนดและประเภทของไฟลทตองการตดตอ
แบบทดสอบกอนเรยน บทท 10 คำาชแจง ใหนกเรยนเลอกคำาตอบทถกตองทสดเพยงขอเดยว
โดยทำาเครองหมายกากบาท (X) ลงในกระดาษคำาตอบ
การจดการแฟมขอมล 1
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
1. ไฟลประเภทใดทสามารถใชโปรแกรม Edit เปดขนมาอานไดก. เทกซไฟลข. ไบนารไฟลค. ไฟลทเกบเปนเรคอรดง. ถกทกขอ
2. ขอใดฟงกชนใชสำาหรบเปดไฟลก. fileopen()ข. frewrite() ค. fwrite()ง. fopen()
3. ฟงกชนในขอใดทใชเลอนไฟลพอยนเตอรไปยงตำาแหนงตาง ๆก. feofข. ftellค. fseekง. freport
4. ในภาษาซใชฟงกชนในขอใดในการเขยนไบนารไฟลก. fprintf()ข. fwrite()ค. writefง. fputs()
การจดการแฟมขอมล 1
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
5. ฟงกชนขอใดใชสำาหรบลบไฟลออกจากฮารดดสกก. fzero()ข. fdelete()ค. remove()ง. freeload()
6. ขอใดไมใชรปแบบการเปดแฟมขอมลแบบแทกซก. เปดแฟมขอมลเพออานอยางเดยวข. เปดแฟมขอมลเพออานและเขยนขอมล ค. เปดแฟมขอมลเพอเขยนขอมลตอทายขอมลเดม ง. เปดแฟมขอมลแบบไบนารเพอทำาการอานขอมลจากแฟม
ขอมล
7. ฟงกชน getc() คอก. ฟงกชนทใชเขยนขอมลลงแฟมขอมลแบบไบนาร ข. ฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลครงละ 1 อกขระ ค. ฟงกชนทใชสำาหรบเขยนขอมลลงแฟมขอมลครงละ 1 อกขระง. ฟงกชนทใชในการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงของ
แฟมขอมล
8. ขอใดไมใชหนวยความจำาสำารองก. คอมพวเตอร ข. ฮารดดสก ค. แผนดสกง. ซดรอม
การจดการแฟมขอมล 2
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
9. ขอใดถกตองทสดก. แฟมขอมลแบบไบนาร คอแฟมขอมลแบบขอความข. แฟมขอมลแบบแทก คอแฟมขอมลแบบเลขฐานสองค. แฟมขอมลแบบแทกจะเกบขอมลในรปของรหสแอสก ง. แฟมขอมลแบบไบนารสามารถใชโปรแกรม notepad อาน
ขอมลได
การจดการแฟมขอมล 2
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
10. ตวแปรไฟลพอยนเตอรคอก. ตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอย
หลงเครองหมาย (*)ข. ตวแปรชนดอกขระสองตว พรอมกำาหนดคาใหแตละตวค. ตวแปรชนดเลขทศนยมพรอมกำาหนดคา ง. ตวแปรเพอเกบขอความ
11. ฟงกชนใดใชในการบนทกขอมลลงในแฟมขอมลทไมไดจดรปแบบ
ก. fprint ข. fwriteค. fread ง. fput
12. ฟงกชนใดใชในการอานขอมลจากแฟมขอมลทไมไดจดรปแบบก. fget ข. fwriteค. fread ง. fput
13. แฟมขอมลทไมไดจดรปแบบมกใชกบขอมลลกษณะใดก. Text File ข. Stream Fileค. Unformatted File ง. Binary File
14. ในฟงกชนการประมวลผลแฟมขอมลทใชตดตอกบอปกรณภายนอก เราสามารถใชคาคงทใดเพอระบใหแสดงผลทางเครองพมพ
ก. stdin ข. stdoutค. stdprn ง. stderr
การจดการแฟมขอมล 35
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
15. ในฟงกชนการประมวลผลแฟมขอมลทใชตดตอกบอปกรณภายนอก เราสามารถใชคาคงทใดเพอระบใหรบขอมลทางแปนพมพ
ก. stdin ข. stdoutค. stdprn ง. Stderr
แบบฝกหดคำาชแจง ตอบคำาถามตอไปน
1. จงอธบายความหมายของแฟมขอมล 2. จงบอกประเภทของแฟมขอมล 3. จงอธบายความหมายของแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร 4. จงอธบายขอแตกตางระหวางแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร
การจดการแฟมขอมล 35
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
การจดการแฟมขอมล 35
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
5. จงบอกชอฟงกชนทใชกบแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร
การจดการแฟมขอมล 36
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
คำาชแจง ใหนกเรยนเลอกคำาตอบทถกตองทสดเพยงขอเดยว โดยทำาเครองหมายกากบาท () ลงในกระดาษคำาตอบ
1. ฟงกชนใดใชในการบนทกขอมลลงในแฟมขอมลทไมไดจดรปแบบ
ก. fprint ข. fwriteค. fread ง. fput
2. ฟงกชนใดใชในการอานขอมลจากแฟมขอมลทไมไดจดรปแบบก. fget ข. fwriteค. fread ง. fput
3. แฟมขอมลทไมไดจดรปแบบมกใชกบขอมลลกษณะใดก. Text File ข. Stream Fileค. Unformatted File ง. Binary File
4. ในฟงกชนการประมวลผลแฟมขอมลทใชตดตอกบอปกรณภายนอก เราสามารถใชคาคงทใดเพอระบใหแสดงผลทางเครองพมพ
ก. stdin ข. stdoutค. stdprn ง. stderr
5. ในฟงกชนการประมวลผลแฟมขอมลทใชตดตอกบอปกรณภายนอก เราสามารถใชคาคงทใดเพอระบใหรบขอมลทางแปนพมพ
การจดการแฟมขอมล 37
แบบทดสอบหลงหนวยท 10
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
ก. stdin ข. stdoutค. stdprn ง. stderr
การจดการแฟมขอมล 37
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
6. ไฟลประเภทใดทสามารถใชโปรแกรม Edit เปดขนมาอานไดก. เทกซไฟลข. ไฟลทเกบเปนเรค. คอรดไบนารไฟลง. ถกทกขอ
7. ขอใดฟงกชนใชสำาหรบเปดไฟลก. fopen()ข. fwrite() ค. frewrite() ง. fileopen()
8. ฟงกชนในขอใดทใชเลอนไฟลพอยนเตอรไปยงตำาแหนงตาง ๆก. freport ข. fseek ค. ftellง. feof
9. ในภาษาซใชฟงกชนในขอใดในการเขยนไบนารไฟลก. fputs()ข. writef ค. fwrite()ง. fprintf()
10. ฟงกชนขอใดใชสำาหรบลบไฟลออกจากฮารดดสกก. freeload()
การจดการแฟมขอมล 38
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
ข. remove()ค. fdelete()ง. fzero()
การจดการแฟมขอมล 38
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
11. ขอใดไมใชรปแบบการเปดแฟมขอมลแบบแทกซก. เปดแฟมขอมลแบบไบนารเพอทำาการอานขอมลจากแฟม
ขอมลข. เปดแฟมขอมลเพอเขยนขอมลตอทายขอมลเดม ค. เปดแฟมขอมลเพออานและเขยนขอมล ง. เปดแฟมขอมลเพออานอยางเดยวเปดแฟมขอมลเพออาน
อยางเดยว
12. ฟงกชน getc() คอก. ฟงกชนทใชในการเลอนไฟลพอยนเตอรหรอตวชตำาแหนง
ของแฟมขอมล ข. ฟงกชนทใชสำาหรบเขยนขอมลลงแฟมขอมลครงละ 1 อกขระ ค. ฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลครงละ 1 อกขระง. ฟงกชนทใชเขยนขอมลลงแฟมขอมลแบบไบนาร
13. ขอใดไมใชหนวยความจำาสำารองก. ซดรอม ข. แผนดสก ค. ฮารดดสกง. คอมพวเตอร
14. ขอใดถกตองทสดก. แฟมขอมลแบบไบนารสามารถใชโปรแกรม notepad อาน
ขอมลไดข. แฟมขอมลแบบแทกจะเกบขอมลในรปของรหสแอสกค. แฟมขอมลแบบแทก คอแฟมขอมลแบบเลขฐานสอง
การจดการแฟมขอมล 39
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
ง. แฟมขอมลแบบไบนาร คอแฟมขอมลแบบขอความ
15. ตวแปรไฟลพอยนเตอรคอก. ตวแปรเพอเกบขอความข. ตวแปรชนดเลขทศนยมพรอมกำาหนดคา ค. ตวแปรชนดอกขระสองตว พรอมกำาหนดคาใหแตละตวง. ตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอย
หลงเครองหมาย (*)
การจดการแฟมขอมล 39
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
เฉลยจงใชขอมลจากสวนของโปรแกรมตอไปน
#include<stdio.h>main( ){ FILE *pt ; char c ; in i ;
float f ; pt = fopen (“infor.dat”, “w”) ;
fclosse (pt)}
1.1 จากสวนของโปรแกรมทกำาหนดขางตนถามการรบขอมลคา c, i และ f เขาทางแปนพมพแลว จงเขยนคำาสงทใชบนทกขอมลลงในแฟมขอมลโดยคาทเปนทศนยมกำาหนดใหมทศนยม 4 ตำาแหนง
fprintf (pt, “%c %d %4f”, c,i,f) ;
1.2 จากสวนของโปรแกรมทกำาหนดขางตน ถาเปลยนคำาสงเปดแฟมขอมลเปนpt = fopen (“infor.dat”, “r+”) ; แลวจงเขยนคำาสงเพมเตมเพออานคา c, i และ f จากแฟมขอมล พรอมทงแสดงผลคาทอานไดทางจอภาพ
fprintf (pt, “%c %d %f”, &c, &i, &f) ;printf (“%c \t %d\t %4f”, c,i,f) ;
การจดการแฟมขอมล 40
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
คำาชแจง ตอบคำาถามตอไปน
1. จงอธบายความหมายของแฟมขอมลแหลงเกบขอมลซงจะถกเกบในสอบนทกขอมลหรอหนวย
ความจำาสารอง ซงอาจจะเปนฮารดดสก แผนดสก ซดรอม หรออปกรณอนๆ ซงการเกบขอมลในแฟมขอมล จะทำาใหขอมลทปอนผานทางแปนพมพถกเกบอยางถาวรและสามารถเรยกใชงานไดตลอดเวลา ซงตางกบการไมจดเกบขอมลลงในแฟมขอมลจะทำาใหขอมลนนสญหายไป หลงจากทำาการปดเครองคอมพวเตอร
2. จงบอกประเภทของแฟมขอมลแบงออกเปน 2 ประเภท คอ 1. แฟมขอมลแบบเทกซ แฟมขอมลแบบขอความ 2. แฟมขอมลแบบไบนาร แฟมขอมลแบบเลขฐานสอง
3. จงอธบายความหมายของแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร
แฟมขอมลแบบเทกซ หมายถง แฟมขอมลแบบขอความ โดยขอมลทถกเกบในแฟมประเภทนจะอยในรปของรหสแอสก เมอจบขอมลทตองการจดเกบจะตองตามดวยรหสแอสก และตามดวยรหสขนบรรทดใหม (\n)
แฟมขอมลแบบไบนาร หมายถง แฟมขอมลแบบเลขฐานสอง โดยขอมลทถกจดเกบในแฟมประเภทนจะอยในรปของเลข
การจดการแฟมขอมล 41
เฉลยแบบฝกหดทายหนวยท 10
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
ฐานสอง เมอจบขอมลทตองการจดเกบจะตองตามดวยรหสขนบรรทดใหม (\n) เชนเดยวกบแฟมขอมลแบบเทกซ
4. จงอธบายขอแตกตางระหวางแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร
แฟมขอมลแบบไบนาร สามารถเขาถงขอมลแบบสมได สวนแฟมขอมลแบบเทกซนนหากตองการเขาถงขอมลทตองการจะตองเขาถงแบบเรยงลำาดบ คอจะตองอานขอมลตงแตเรคคอรดแรกไปเรอยๆ จนกวาจะพบขอมลทตองการ
การจดการแฟมขอมล 41
หนวยท 10
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
5. จงบอกชอฟงกชนทใชกบแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร
ฟงกชนทใชกบแฟมขอมลแบบเทกซ ไดแก ฟงกชน getc(), fgetc(),fputc(),fgets(),fputs(),fscanf() และ fprintf()
ฟงกชนทใชกบแฟมขอมลแบบไบนาร ไดแก ฟงกชน fread(),fwrite() และ fseek()
การจดการแฟมขอมล 41
เฉลยแบบทดสอบ หนวยท
10กอน
1. ก 2. ง 3. ค 4. ข 5. ค 6.ง 7. ข 8. ก 9. ค
10. ก 11. ข 12. ค 13.ง
หลง
1. ข 2. ค 3. ง 4. ค 5. ก 6. ค 7. ก 8. ข 9. ค 10. ข
Recommended