บทที่ 10 การเปิดเเละปิดข้อมูล

48
บบบบบ 10 . กกกกกกกกกกกกกกกกก กกกกกก 10.1.1 บบบบบบบบบบบบบบบบบบบ กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกก กกกกกก 1. กกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกก 2. กกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกก 1. บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบ กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกก กกกกกกกกกกก กกกกกกกก 10.1 กกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกก กกกกกกกกกก กกกกกกกก r r+ a กกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกก

Upload: kullanat-pliannoi

Post on 03-Apr-2016

216 views

Category:

Documents


0 download

DESCRIPTION

การเปิดเเละปิดข้อมูล - วรพล+มนัส การทำงานกับ Text File การทำงานกับ Binary File - ณัฐพงษ์+ ธัญภัทร แบบฝึกหัด(เฉลย) - กุลณัฐ+สถาพร

TRANSCRIPT

Page 1: บทที่ 10 การเปิดเเละปิดข้อมูล

บทท 10 . การเปดและปดแฟมขอมล

10.1.1 แฟมขอมลแบบเทกซ ในการสรางแฟมขอมลแบบเทกซนนมหวขอสำาคญๆ

ดงน 1. โหมดทใชในการสรางแฟมขอมลแบบเทกซ 2. ฟงกชนทสำาคญในการใชงานแฟมขอมลแบบเทกซ

1. โหมดทใชในการสรางแฟมขอมลแบบเทกซ ในการสรางแฟมขอมลหรอเปดแฟมขอมลแบบเทกซนน จำาเปนอยางยงทจะตองใชควบคกบโหมดการใชงานซงมลกษณะคลายกนกบโหมดของการสรางหรอเปดแฟมขอมลแบบไบนาร ซงจะกลาวถงแฟมขอมลแบบไบนารในลำาดบตอไป สำาหรบโหมดทใชในการสรางและเปดแฟมขอมลแบบเทกซนน มโหมดทสำาคญๆ ดงตอไปน ตารางท 10.1 รปแบบโหมดทใชในการสรางแฟมขอมลแบบเทกซ

รปแบบการเปดแฟมขอมล

ความหมาย

r r+ a

a+ w

w+

เปดแฟมขอมลเพออานอยางเดยว เปดแฟมขอมลเพออานและเขยนขอมล เปดแฟมขอมลเพอเขยนขอมลตอทายขอมลเดม เปดแฟมขอมลเพออานและเขยนขอมลตอทายขอมลเดม เปดแฟมขอมลเพอเขยนขอมลทบในแฟมขอมลเดม หากไมมแฟมขอมลทระบ จะ

Page 2: บทที่ 10 การเปิดเเละปิดข้อมูล

สรางแฟมขอมลขนมาใหม เปดแฟมขอมลเพออานขอมลและเขยนขอมลใหมทบขอมลเดม หากไมมแฟมขอมลทระบ จะสรางแฟมขอมลขนมาใหม

2. ฟงกชนทสำาคญในการใชในการเปดและปดงานแฟมขอมลแบบเทกซ

2.1 ฟงกชนเปดแฟมขอมล 2.2 ฟงกชนปดแฟมขอมล

Page 3: บทที่ 10 การเปิดเเละปิดข้อมูล

2.1 ฟงกชนเปดแฟมขอมล ในการอานแฟมขอมลแบบเทกซ จะตองทำาการเปด

แฟมขอมลกอนทจะนำาขอมลมาใชฟงกชนทใชในการเปดแฟมขอมล คอฟงกชน fopen() มรปแบบการใชฟงกชนดงน

FILE *ชอตวแปรไฟลพอยนเตอร; ชอตวแปรไฟลพอยนเตอร = fopen(“ชอแฟมขอมล”,”รปแบบการเปดแฟมขอมล”);

ภาพท 10.1 รปแบบการใชฟงกชนเปดแฟมขอมลแบบเทกซ

จากภาพท 10.1 อธบายการทำางานของฟงกชนไดดงน FILE หมายถง คำาบงคบใชสำาหรบประกาศตวแปรไฟลพอยนเตอร ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา

เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

fopen() หมายถง ชอฟงกชนทใชสำาหรบเปดแฟมขอมลขนมาใชงาน

ชอแฟมขอมล หมายถง ชอของแฟมขอมลทตองการเปดขนมาใชงานหากมเสนทางของการจดเกบแฟมขอมลใหระบเสนทางใหชดเจน ชอแฟมขอมลตองอยภายใตเครองหมายคำาพดค “(Double quote)

รปแบบการเปดแฟมขอมล หมายถง รปแบบทใชสำาหรบเปดแฟมขอมลขนมาใชงาน เชน เปดแฟมขอมลเพออานขอมลอยางเดยว เปดแฟมขอมลเพอเขยน เปนตน รปแบบการเปดแฟมขอมล ตองอยภายใตเครองหมายคำาพดค “

Page 4: บทที่ 10 การเปิดเเละปิดข้อมูล

(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 การเปดแฟมขอมลแบบเทกซ

Page 5: บทที่ 10 การเปิดเเละปิดข้อมูล

2.2 ฟงกชนปดแฟมขอมล ในการอานแฟมขอมลแบบเทกซ จะตองทำาการเปดแฟม

ขอมลกอนทจะทำาการอาน เมออานขอมลเรยบรอยแลว และเลกใชงาน จะตองทำาการปดแฟมขอมล โดยฟงกชนทใชในการปดแฟมขอมล คอ fclose() มรปแบบการใชฟงกชนดงน

fclose(ชอตวแปรไฟลพอยนเตอร);

ภาพท 10.5 รปแบบการใชฟงกชนปดแฟมขอมลแบบเทกซ

จากภาพท 10.5 อธบายรปแบบการใชฟงกชนปดแฟมขอมลแบบเทกซไดดงน fclose() หมายถง ชอฟงกชนทใชสำาหรบปดแฟมขอมล ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา

เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

ตวอยางการใชฟงกชน fclose() ไดแสดงการใชงานไวแลวในตวอยางท 10.1 และ 10.2

Page 6: บทที่ 10 การเปิดเเละปิดข้อมูล

10.1.2 แฟมขอมลแบบไบนาร จากทกลาวมาจะเหนวาแฟมขอมลแบบไบนารนน

เปนแฟมขอมลแบบเลขฐานสอง โดยขอมลทถกจดเกบในแฟมประเภทนจะอยในรปของเลขฐานสอง ทำาใหไมสามารถเปดอานขอมลโดยใชโปรแกรมอานขอความได แฟมขอมลประเภทนสามารถเขาถงขอมลแบบสมได

ในการสรางแฟมขอมลแบบไบนารนนมหวขอสำาคญๆ ดงน

1. โหมดทใชในการสรางแฟมขอมลแบบไบนาร 2. ฟงกชนทสำาคญในการใชงานแฟมขอมลแบบ

ไบนาร

1. โหมดทใชในการสรางแฟมขอมลแบบไบนาร ในการสรางแฟมขอมลหรอเปดแฟมขอมลแบบไบนารนน

จำาเปนอยางยงทจะตองใชควบคกบโหมดการใชงานซงมลกษณะคลายกนกบโหมดของการสรางหรอเปดแฟมขอมลแบบเทกซ สำาหรบโหมดทใชในการสรางและเปดแฟมขอมลแบบไบนารนน มโหมดทสำาคญๆดงตอไปน

ตารางท 10.2 โหมดการสรางและเปดแฟมขอมลแบบไบนารโหมดการใช

งานอธบาย

rb เปดแฟมขอมลแบบไบนารเพอทำาการอานขอมลจากแฟมขอมล

rb+ เปดแฟมขอมลแบบไบนารเพอทำาการอานและบนทกขอมล

wb เปดแฟมขอมลแบบไบนารเพอทำาการบนทกขอมล

Page 7: บทที่ 10 การเปิดเเละปิดข้อมูล

wb+ สรางแฟมขอมลแบบไบนารเพอทำาการอานและบนทกขอมล หรอสรางแฟมขอมลใหมหากไมพบแฟมขอมลเดม

ab เปดแฟมขอมลแบบไบนารเพอทำาการบนทกขอมลตอทายขอมลเดม

ab+ เปดแฟมขอมลแบบไบนารเพอทำาการอานและบนทกขอมลตอทายขอมลเดม หรอสรางแฟมขอมลใหม หากไมพบแฟมขอมลเดม

2. ฟงกชนทสำาคญในการใชงานเปดและปดแฟมขอมลแบบไบนาร

2.1 ฟงกชนเปดแฟมขอมล 2.2 ฟงกชนปดแฟมขอมล

Page 8: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

2.1 ฟงกชนเปดแฟมขอมลในการอานแฟมขอมลแบบไบนาร จะตองทำาการเปด

แฟมขอมลกอนทจะนำาขอมลมา ใชงาน เหมอนกบแฟมขอมลแบบเทกซ ฟงกชนทใชในการเปดแฟมขอมล คอฟงกชน fopen() มรปแบบการใชฟงกชนดงน

FILE *ชอตวแปรไฟลพอยนเตอร; ชอตวแปรไฟลพอยนเตอร = fopen(“ชอแฟมขอมล”,”รปแบบการเปดแฟมขอมล”);

ภาพท 10.6 รปแบบการใชฟงกชนเปดแฟมขอมลแบบไบนาร

จากภาพท 10.6 อธบายการทำางานของฟงกชนไดดงนFILE หมายถง คำาบงคบใชสำาหรบประกาศตวแปร ไฟลพอยนเตอร ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา

เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

fopen() หมายถง ชอฟงกชนทใชสำาหรบเปดแฟมขอมลขนมาใชงาน

ชอแฟมขอมล หมายถง ชอของแฟมขอมลทตองการเปดขนมาใชงานหากมเสนทางของการจดเกบแฟมขอมลใหระบเสนทางใหชดเจน ชอแฟมขอมลตองอยภายใตเครองหมายคำาพด ค “ (Double quote)

การจดการแฟมขอมล 15

Page 9: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

รปแบบการเปดแฟมขอมล หมายถง รปแบบทใชสำาหรบเปดแฟมขอมลขนมาใชงาน เชน เปดแฟมขอมลเพออานขอมลอยางเดยว เปดแฟมขอมลเพอเขยน เปนตน รปแบบการเปดแฟมขอมล ตองอยภายใตเครองหมายคำาพดค “(Double quote) เชนเดยวกบชอแฟมขอมล คนระหวางชอแฟมขอมลกบรปแบบการเปดแฟมขอมลดวยเครองหมายคอมมา (,)

ในการอานขอมลจากแฟมขอมล และการเขยนขอมลลงแฟมขอมลนน มฟงกชนทสำาคญดงตอไปน

10.2.1 ฟงกชนอานและเขยนขอมลครงละ 1 อกขระ

1. ฟงกชนอานขอมลประกอบดวยฟงกชน getc() และ fgetc() 2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fputc()

การจดการแฟมขอมล 15

10.2 การทำางานกบ Text File

Page 10: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 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

Page 11: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

ภาพท 10.9 รปแบบการใชฟงกชน getc()

จากภาพท 10.9 อธบายรปแบบการใชฟงกชน getc() ไดดงน

ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลอกขระทอานจากแฟมขอมลครงละ 1 ตว

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

การจดการแฟมขอมล 15

Page 12: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

(2) ฟงกชน fgetc() เปนฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลครงละ 1 อกขรเชนเดยวกบฟงกชน getc() มรปแบบการใชฟงกชนดงน

ชอตวแปร = fgetc (ชอตวแปรไฟลพอยนเตอร);

ภาพท 10.10 รปแบบการใชฟงกชน fgetc()

จากภาพท 10.10 อธบายรปแบบการใชฟงกชน fgetc() ไดดงน

ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลอกขระทอานจากแฟมขอมลครงละ 1 ตว

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

การจดการแฟมขอมล 16

Page 13: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fputc()

(1) ฟงกชน fputc() เปนฟงกชนทใชสำาหรบเขยนขอมลลงแฟมขอมลครงละ 1 อกขระ มรปแบบการใชฟงกชนดงน

fputc(ชอตวแปรหรอคาคงทอกขระ, ชอตวแปรไฟลพอยนเตอร);

ภาพท 10.11 รปแบบการใชฟงกชน fputc()

จากภาพท 10.8 อธบายรปแบบการใชฟงกชน fputc() ไดดงน

ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลอกขระหรอคาคงทอกขระทจะเกบลงแฟมขอมล

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

การจดการแฟมขอมล 16

Page 14: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

การใชฟงกชนเพออานและเขยนขอมลครงละ 1 อกขระ แสดงไดดงตวอยางท 10.3

การจดการแฟมขอมล 16

Page 15: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

1. ฟงกชนอานขอมล ประกอบดวยฟงกชน fgets()

(1) ฟงกชน fgets() เปนฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลเปนชดอกขระ มรปแบบการใชฟงกชนดงน

fgets (ตวแปรชดอกขระหรอสตรง, จำานวนอกขระ, ชอตวแปรไฟลพอยนเตอร);

ภาพท 10.13 รปแบบการใชฟงกชน fget

จากภาพท 10.10 อธบายรปแบบการใชฟงกชน fgets() ไดดงน

ตวแปรชดอกขระหรอสตรง หมายถง ตวแปรชดอกขระหรอสตรงทใชสำาหรบเกบขอความ

จำานวนอกขระ หมายถง จำานวนอกขระทตองการอานจากแฟมขอมล

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

การจดการแฟมขอมล 19

Page 16: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fputs()

(1) ฟงกชน fputs() เปนฟงกชนทใชสำาหรบเขยนขอมลลงแฟมเปนชดอกขระมรปแบบในการใชฟงกชน ดงน

fputs(ตวแปรหรอคาคงทชดอกขระ, ชอตวแปรไฟลพอยนเตอร);

ภาพท 10.14 รปแบบการใชฟงกชน fputs()

จากภาพท 10.13 อธบายรปแบบการใชฟงกชน fputs() ไดดงน

ตวแปรหรอคาคงทชดอกขระ หมายถง ชอตวแปรทเกบชดอกขระหรอคาคงทชดอกขระ ทตองการนำาไปจดเกบในแฟมขอมล

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

2.3.3 ฟงกชนอานและเขยนขอมลเปนอกขระชดอกขระหรอตวเลข

การจดการแฟมขอมล 20

Page 17: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

1. ฟงกชนอานขอมล ประกอบดวยฟงกชน fscanf()

(1) ฟงกชน fscanf() เปนฟงกชนทใชสำาหรบอานขอมล มรปแบบการใชฟงกชนดงน

ภาพท 10.15 รปแบบ การใช

ฟงกชน fscanf () จากภาพท 10.15 อธบายรปแบบการใชฟงกชน fscanf() ไดดงน

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรแฟมขอมลทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

รหสรปแบบ หมายถง รหสรปแบบทใชแทนขอมล

การจดการแฟมขอมล 20

fscanf(ชอตวแปรไฟลพอยนเตอร, “รหสรปแบบ”, &ชอตวแปร);

Page 18: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมล จะตองมเครองหมายแอมเพอแซนด(&) นำาหนา เหมอนกบการใชฟงกชน scanf()

การจดการแฟมขอมล 20

Page 19: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

2. ฟงกชนเขยนขอมล ประกอบดวยฟงกชน fprintf()

(1) ฟงกชน fprintf() เปนฟงกชนทใชสำาหรบเขยนขอมลลงแฟม มรปแบบการใชฟงกชนดงน

fprintf (ชอตวแปรไฟลพอยนเตอร, “รหสรปแบบ”, &ชอตวแปร);

ภาพท 10.16 รปแบบการใชฟงกชน fprintf ()

จากภาพท 10.16 อธบายรปแบบการใชฟงกชน fscanf() ไดดงน

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรแฟมขอมลทกำาหนดขนมาเพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

รหสรปแบบ หมายถง รหสรปแบบทใชแทนขอมล

ชอตวแปร หมายถง ชอทกำาหนดขนเพอใชสำาหรบเกบขอมลทตองการบนทกลงแฟมขอมล

การจดการแฟมขอมล 23

Page 20: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 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

Page 21: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

จากภาพท 10.18 อธบายรปแบบการใชฟงกชน fread() ไดดงน ตำาแหนงของตวแปร หมายถง ตำาแหนงของตวแปรทตองการอานขอมล ชอตวแปรโครงสรางขอมล หมายถง ตวแปรโครงสรางขอมล

เรคคอรดทตองการอาน ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

การจดการแฟมขอมล 23

Page 22: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

10.3.2 ฟงกชนทใชเขยนขอมลลงแฟมขอมล ประกอบดวยฟงกชน fwrite()

1. ฟงกชน fwrite() เปนฟงกชนทใชเขยนขอมลลงแฟมขอมลแบบไบนาร มรปแบบการ

ใชงานดงน

fwrite(ตำาแหนงของตวแปร, sige of (ตวแปรโครงสรางขอมล), 1,

ชอตวแปรไฟลพอยนเตอร);ภาพท 10.19 รปแบบการใชฟงกชน fwrite()

จากภาพท 10.19 อธบายรปแบบการใชฟงกชน fwrite() ไดดงน ตำาแหนงของตวแปร หมายถง ตำาแหนงของตวแปรทตองการเขยนขอมล ชอตวแปรโครงสรางขอมล หมายถง ตวแปรโครงสรางขอมล

เรคคอรดทตองการเขยนชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา

เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

การจดการแฟมขอมล 24

Page 23: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

10.3.3 ฟงกชนทใชในการเขาถงขอมลทตองการ ประกอบดวยฟงกชน fseek() 1. ฟงกชน fseek() เปนฟงกชนทใชในการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงของแฟมขอมล ไปยงตำาแหนงทระบในแฟมขอมล มรปแบบการใชงานดงน

ภาพท 10.21 รปแบบ การใช

ฟงกชน fseek()

จากภาพท 10.21 อธบายรปแบบการใชฟงกชน fseek() ไดดงน

ชอตวแปรไฟลพอยนเตอร หมายถง ชอตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอยหลงเครองหมาย (*)

ตำาแหนงของเรคคอรด หมายถง ตำาแหนงของเรคคอรดทตองการใหไฟลพอยนเตอร หรอตวชตำาแหนงแฟมขอมลชไป ซงเปนไดทงคาบวกและคาลบ

รปแบบการเคลอนยายตวชตำาแหนง หมายถง รปแบบการเคลอนยายของไฟลพอยนเตอรหรอตวชตำาแหนงแฟมขอมลโดยรปแบบ

การจดการแฟมขอมล 1

fseek(ชอตวแปรไฟลพอยนเตอร, ตำาแหนงของเรคคอรด,

รปแบบการเคลอนยายตวชตำาแหนง);

Page 24: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

การเคลอนยายตวชตำาแหนงม 3 รปแบบ คอ1. SEEK_SET คอการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงไปยงตนแฟมขอมล เพอทำาการอานหรอบนทกขอมล 2. SEEK_END คอการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงไปยงทายแฟมขอมล เพอทำาการอานหรอบนทกขอมล

3. SEEK_CUR คอการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงไปยงเรคคอรดปจจบน เพอทำาการอานหรอบนทกขอมล

ลกษณะของไฟลจะเปนขอมลแตละไบตมาตอเรยงกนไปจนจบดวยรหสสนสดไฟล EOF (End -Of - File) ประเภทของไฟลถาแบงตามลกษณะการจดเกบขอมลจะมสองประเภทคอไฟลตวอกษร หรอเทกซไฟล ซงเปนการเกบรหสแอสกของตวอกขระ ดงนนไฟลประเภทนสามารถใชโปรแกรมอดเตอรหรอ Notepad เปดขนมาอานได สวนไฟลอกประเภทหนงเรยกวาไฟลขอมลหรอไบนารไฟลซงจะเกบขอมลในรปแบบของเลขฐานสองตามทผใช

การจดการแฟมขอมล 1

สรปทาย

Page 25: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

กำาหนด ไมสามารถเปดขนมาอานไดรเรอง ในการกระทำาใดๆกบไฟลนนจะตองกระทำาสามขนตอน คอ เปดไฟล อานหรอเขยนไฟล และปดไฟลเปนขนตอนสดทาย โดยในภาษาซมฟงกชนทใชกระทำากบไฟลมากมายขนกบชนดและประเภทของไฟลทตองการตดตอ

แบบทดสอบกอนเรยน บทท 10 คำาชแจง ใหนกเรยนเลอกคำาตอบทถกตองทสดเพยงขอเดยว

โดยทำาเครองหมายกากบาท (X) ลงในกระดาษคำาตอบ

การจดการแฟมขอมล 1

Page 26: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

1. ไฟลประเภทใดทสามารถใชโปรแกรม Edit เปดขนมาอานไดก. เทกซไฟลข. ไบนารไฟลค. ไฟลทเกบเปนเรคอรดง. ถกทกขอ

2. ขอใดฟงกชนใชสำาหรบเปดไฟลก. fileopen()ข. frewrite() ค. fwrite()ง. fopen()

3. ฟงกชนในขอใดทใชเลอนไฟลพอยนเตอรไปยงตำาแหนงตาง ๆก. feofข. ftellค. fseekง. freport

4. ในภาษาซใชฟงกชนในขอใดในการเขยนไบนารไฟลก. fprintf()ข. fwrite()ค. writefง. fputs()

การจดการแฟมขอมล 1

Page 27: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

5. ฟงกชนขอใดใชสำาหรบลบไฟลออกจากฮารดดสกก. fzero()ข. fdelete()ค. remove()ง. freeload()

6. ขอใดไมใชรปแบบการเปดแฟมขอมลแบบแทกซก. เปดแฟมขอมลเพออานอยางเดยวข. เปดแฟมขอมลเพออานและเขยนขอมล ค. เปดแฟมขอมลเพอเขยนขอมลตอทายขอมลเดม ง. เปดแฟมขอมลแบบไบนารเพอทำาการอานขอมลจากแฟม

ขอมล

7. ฟงกชน getc() คอก. ฟงกชนทใชเขยนขอมลลงแฟมขอมลแบบไบนาร ข. ฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลครงละ 1 อกขระ ค. ฟงกชนทใชสำาหรบเขยนขอมลลงแฟมขอมลครงละ 1 อกขระง. ฟงกชนทใชในการเลอนไฟลพอยนเตอรหรอตวชตำาแหนงของ

แฟมขอมล

8. ขอใดไมใชหนวยความจำาสำารองก. คอมพวเตอร ข. ฮารดดสก ค. แผนดสกง. ซดรอม

การจดการแฟมขอมล 2

Page 28: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

9. ขอใดถกตองทสดก. แฟมขอมลแบบไบนาร คอแฟมขอมลแบบขอความข. แฟมขอมลแบบแทก คอแฟมขอมลแบบเลขฐานสองค. แฟมขอมลแบบแทกจะเกบขอมลในรปของรหสแอสก ง. แฟมขอมลแบบไบนารสามารถใชโปรแกรม notepad อาน

ขอมลได

การจดการแฟมขอมล 2

Page 29: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 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

Page 30: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

15. ในฟงกชนการประมวลผลแฟมขอมลทใชตดตอกบอปกรณภายนอก เราสามารถใชคาคงทใดเพอระบใหรบขอมลทางแปนพมพ

ก. stdin ข. stdoutค. stdprn ง. Stderr

แบบฝกหดคำาชแจง ตอบคำาถามตอไปน

1. จงอธบายความหมายของแฟมขอมล 2. จงบอกประเภทของแฟมขอมล 3. จงอธบายความหมายของแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร 4. จงอธบายขอแตกตางระหวางแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร

การจดการแฟมขอมล 35

Page 31: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

การจดการแฟมขอมล 35

Page 32: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

5. จงบอกชอฟงกชนทใชกบแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร

การจดการแฟมขอมล 36

Page 33: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 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

Page 34: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

ก. stdin ข. stdoutค. stdprn ง. stderr

การจดการแฟมขอมล 37

Page 35: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

6. ไฟลประเภทใดทสามารถใชโปรแกรม Edit เปดขนมาอานไดก. เทกซไฟลข. ไฟลทเกบเปนเรค. คอรดไบนารไฟลง. ถกทกขอ

7. ขอใดฟงกชนใชสำาหรบเปดไฟลก. fopen()ข. fwrite() ค. frewrite() ง. fileopen()

8. ฟงกชนในขอใดทใชเลอนไฟลพอยนเตอรไปยงตำาแหนงตาง ๆก. freport ข. fseek ค. ftellง. feof

9. ในภาษาซใชฟงกชนในขอใดในการเขยนไบนารไฟลก. fputs()ข. writef ค. fwrite()ง. fprintf()

10. ฟงกชนขอใดใชสำาหรบลบไฟลออกจากฮารดดสกก. freeload()

การจดการแฟมขอมล 38

Page 36: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

ข. remove()ค. fdelete()ง. fzero()

การจดการแฟมขอมล 38

Page 37: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

11. ขอใดไมใชรปแบบการเปดแฟมขอมลแบบแทกซก. เปดแฟมขอมลแบบไบนารเพอทำาการอานขอมลจากแฟม

ขอมลข. เปดแฟมขอมลเพอเขยนขอมลตอทายขอมลเดม ค. เปดแฟมขอมลเพออานและเขยนขอมล ง. เปดแฟมขอมลเพออานอยางเดยวเปดแฟมขอมลเพออาน

อยางเดยว

12. ฟงกชน getc() คอก. ฟงกชนทใชในการเลอนไฟลพอยนเตอรหรอตวชตำาแหนง

ของแฟมขอมล ข. ฟงกชนทใชสำาหรบเขยนขอมลลงแฟมขอมลครงละ 1 อกขระ ค. ฟงกชนทใชสำาหรบอานขอมลจากแฟมขอมลครงละ 1 อกขระง. ฟงกชนทใชเขยนขอมลลงแฟมขอมลแบบไบนาร

13. ขอใดไมใชหนวยความจำาสำารองก. ซดรอม ข. แผนดสก ค. ฮารดดสกง. คอมพวเตอร

14. ขอใดถกตองทสดก. แฟมขอมลแบบไบนารสามารถใชโปรแกรม notepad อาน

ขอมลไดข. แฟมขอมลแบบแทกจะเกบขอมลในรปของรหสแอสกค. แฟมขอมลแบบแทก คอแฟมขอมลแบบเลขฐานสอง

การจดการแฟมขอมล 39

Page 38: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

ง. แฟมขอมลแบบไบนาร คอแฟมขอมลแบบขอความ

15. ตวแปรไฟลพอยนเตอรคอก. ตวแปรเพอเกบขอความข. ตวแปรชนดเลขทศนยมพรอมกำาหนดคา ค. ตวแปรชนดอกขระสองตว พรอมกำาหนดคาใหแตละตวง. ตวแปรทกำาหนดขนมา เพอใชแทนแฟมขอมล ซงตองอย

หลงเครองหมาย (*)

การจดการแฟมขอมล 39

Page 39: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 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

Page 40: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

คำาชแจง ตอบคำาถามตอไปน

1. จงอธบายความหมายของแฟมขอมลแหลงเกบขอมลซงจะถกเกบในสอบนทกขอมลหรอหนวย

ความจำาสารอง ซงอาจจะเปนฮารดดสก แผนดสก ซดรอม หรออปกรณอนๆ ซงการเกบขอมลในแฟมขอมล จะทำาใหขอมลทปอนผานทางแปนพมพถกเกบอยางถาวรและสามารถเรยกใชงานไดตลอดเวลา ซงตางกบการไมจดเกบขอมลลงในแฟมขอมลจะทำาใหขอมลนนสญหายไป หลงจากทำาการปดเครองคอมพวเตอร

2. จงบอกประเภทของแฟมขอมลแบงออกเปน 2 ประเภท คอ 1. แฟมขอมลแบบเทกซ แฟมขอมลแบบขอความ 2. แฟมขอมลแบบไบนาร แฟมขอมลแบบเลขฐานสอง

3. จงอธบายความหมายของแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร

แฟมขอมลแบบเทกซ หมายถง แฟมขอมลแบบขอความ โดยขอมลทถกเกบในแฟมประเภทนจะอยในรปของรหสแอสก เมอจบขอมลทตองการจดเกบจะตองตามดวยรหสแอสก และตามดวยรหสขนบรรทดใหม (\n)

แฟมขอมลแบบไบนาร หมายถง แฟมขอมลแบบเลขฐานสอง โดยขอมลทถกจดเกบในแฟมประเภทนจะอยในรปของเลข

การจดการแฟมขอมล 41

เฉลยแบบฝกหดทายหนวยท 10

Page 41: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

ฐานสอง เมอจบขอมลทตองการจดเกบจะตองตามดวยรหสขนบรรทดใหม (\n) เชนเดยวกบแฟมขอมลแบบเทกซ

4. จงอธบายขอแตกตางระหวางแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร

แฟมขอมลแบบไบนาร สามารถเขาถงขอมลแบบสมได สวนแฟมขอมลแบบเทกซนนหากตองการเขาถงขอมลทตองการจะตองเขาถงแบบเรยงลำาดบ คอจะตองอานขอมลตงแตเรคคอรดแรกไปเรอยๆ จนกวาจะพบขอมลทตองการ

การจดการแฟมขอมล 41

Page 42: บทที่ 10 การเปิดเเละปิดข้อมูล

หนวยท 10

การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411

5. จงบอกชอฟงกชนทใชกบแฟมขอมลแบบเทกซและแฟมขอมลแบบไบนาร

ฟงกชนทใชกบแฟมขอมลแบบเทกซ ไดแก ฟงกชน getc(), fgetc(),fputc(),fgets(),fputs(),fscanf() และ fprintf()

ฟงกชนทใชกบแฟมขอมลแบบไบนาร ไดแก ฟงกชน fread(),fwrite() และ  fseek()

การจดการแฟมขอมล 41

Page 43: บทที่ 10 การเปิดเเละปิดข้อมูล

เฉลยแบบทดสอบ หนวยท

10กอน

1. ก 2. ง 3. ค 4. ข 5. ค 6.ง 7. ข 8. ก 9. ค

10. ก 11. ข 12. ค 13.ง

หลง

1. ข 2. ค 3. ง 4. ค 5. ก 6. ค 7. ก 8. ข 9. ค 10. ข

Page 44: บทที่ 10 การเปิดเเละปิดข้อมูล