1 / 54

แฟ้มข้อมูล (File)

แฟ้มข้อมูล (File). Structure Programming. เนื้อหา. ความหมายของแฟ้มข้อมูล ประเภทของแฟ้มข้อมูล การเข้าถึงข้อมูลในแฟ้มข้อมูล การประมวลผลแฟ้มข้อมูล แฟ้มข้อมูลและฟังก์ชัน. 2. Structure Programming. ระบบคอมพิวเตอร์. Permanent Storage. 3. Structure Programming.

lael
Download Presentation

แฟ้มข้อมูล (File)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. แฟ้มข้อมูล (File) Structure Programming

  2. เนื้อหา • ความหมายของแฟ้มข้อมูล • ประเภทของแฟ้มข้อมูล • การเข้าถึงข้อมูลในแฟ้มข้อมูล • การประมวลผลแฟ้มข้อมูล • แฟ้มข้อมูลและฟังก์ชัน 2 Structure Programming

  3. ระบบคอมพิวเตอร์ Permanent Storage 3 Structure Programming

  4. แฟ้มข้อมูล (File) • คือแหลงที่เก็บขอมูลเปนไบตและมีชื่อเฉพาะ สํ าหรับแฟมแตละแฟม • อาจเปนขอมูลที่ยังไมไดประมวลผล เชน ขอมูล รายชื่อพนักงาน • หรืออาจเปนขอมูลที่เปนผลลัพธจากการประมวลผล เชน รายชื่อพนักงานที่เรียงตามลําดับตัวอักษรแล้ว 4 Structure Programming

  5. แฟ้มข้อมูล (File) • แฟ้มข้อมูลจะเก็บไวในอุปกรณบันทึกขอมูล • เชน จานบันทึก จานบันทึกแบบแข็ง แถบบันทึก (Tape) ซีดีรอม (CD-ROM) เปนตน 5 Structure Programming

  6. ประเภทของแฟ้มข้อมูล • แบงโดยใช้เกณฑ์ 2 แบบคือ • แบงตามลักษณะการใชงาน • แบงตามลักษณะการเก็บขอมูลในแฟม 6 Structure Programming

  7. ประเภทของแฟ้มข้อมูล • แบงตามลักษณะการใช้งาน • แฟมขอมูลมาตรฐาน (Standard Files of Stream Files) • เปนแฟมขอมูลที่มีวิธีการใชงานที่จัดเตรียมไวใหใชไดอยางสะดวก มีคําสั่งเฉพาะงานใหเลือกใชไดตามความเหมาะสม 7 Structure Programming

  8. ประเภทของแฟ้มข้อมูล • แบงตามลักษณะการใช้งาน 2. แฟมขอมูลระบบ (System Files) • เปนแฟมข้อมูลที่ผูเขียนโปรแกรมจะตองกํ าหนด สิ่งตางๆ ที่เปนองคประกอบดวยตนเอง ไมมีโปรแกรมอื่นใด มาชวยเหลือเหมือนแฟมมาตรฐาน 8 Structure Programming

  9. ประเภทของแฟ้มข้อมูล • แบงตามลักษณะการเก็บขอมูลในแฟม • แฟมขอมูลเชิงขอความ (Text Files) • เปนการจัดเก็บแฟมขอมูลในลักษณะขอความ (Text) ซึ่งจะตองแปลงขอความไปตามรหัสแอสกี (ASCII CODE) • มีความยาวบรรทัดละ 256 ตัวอักษร ทายบรรทัดจะมีรหัส \n (new line) หมายถึงการขึ้นบรรทัดใหม 9 Structure Programming

  10. ประเภทของแฟ้มข้อมูล • แบงตามลักษณะการเก็บขอมูลในแฟม 2.แฟมขอมูลเชิงฐานสอง (Binary Files) • เปนการจัดเก็บแฟมขอมูลในระบบเลขฐานสอง หรือ Binary Code • ไมตองแปลงเหมือนกับ Text file เพราะขอมูลในระบบคอมพิวเตอรถูกจัดเก็บในระบบเลขฐานสองอยูแลว 10 Structure Programming

  11. การเข้าถึงข้อมูลในแฟ้มข้อมูลการเข้าถึงข้อมูลในแฟ้มข้อมูล • มีวิธีเขาถึงได 2 วิธีคือ 1. การเขาถึงแบบตามลําดับ (Sequential Access) • การเขาถึงขอมูลแบบนี้จะตองผานขอมูลที่อยูในเรคอรดกอนหนาตามลําดับเพื่อไปยังเรคอรดที่ตองการ • วิธีการเขาถึงลักษณะนี้ใชไดกับแฟมขอมูลที่บันทึกอยูบนสื่อบันทึกขอมูล เชน เทปแมเหล็ก (Magnetic Tape) จานแมเหล็ก (Magnetic Disk) 11 Structure Programming

  12. การเข้าถึงข้อมูลในแฟ้มข้อมูลการเข้าถึงข้อมูลในแฟ้มข้อมูล • มีวิธีเขาถึงได 2 วิธีคือ 2. การเขาถึงแบบโดยตรง (direct access) • การเขาถึงขอมูลแบบนี้จะไปยังเรคอรดที่ตองการไดโดยตรง ไมตองผานเรคอรดกอนหนา • วิธีการเขาถึงลักษณะนี้ใชไดกับแฟมขอมูลที่บันทึกอยูบนสื่อบันทึกขอมูล เชน จานแมเหล็ก (Magnetic Disk) แตใชไมไดกับแฟมขอมูลที่บันทึกอยูบนเทปแมเหล็ก (Magnetic Tape) 12 Structure Programming

  13. การประมวลผลแฟมขอมูลการประมวลผลแฟมขอมูล • การประมวลผลแฟมขอมูลแบงออกเปน 3 ขั้นตอน คือ 1. การเปิดแฟ้มข้อมูล 2. ทำงานกับแฟ้มข้อมูล • การบันทึกขอมูล (Write) ลงในแฟมขอมูล • การอานขอมูล (Read) จากแฟมขอมูล 3. การปิดแฟ้มข้อมูล 13 Structure Programming

  14. (Begin of File) (File Pointer) (End of File) (Buffer) (Data File) 14 Structure Programming

  15. คำอธิบาย • เมื่อเปดแฟมขอมูล ตัวชี้ตําแหนง (fp=file pointer) จะชี้อยูที่ตํ าแหนงแรกของแฟมขอมูล • ถามีการประมวลผลและตองใชขอมูลตัวถัดไป ตัวชี้ตํ าแหนงจะเลื่อนไปยังขอมูลที่รอรับการประมวลผลถัดไปเรื่อยๆ จนถึงตําแหนง EOF (End of File) ซึ่งเปนขอมูลตัวสุดทายของแฟมขอมูล • การติดตอระหวางซีพียูกับแฟมขอมูลในจานบันทึก ไมใชการติด ตอกันโดยตรง แตจะมีการจัดเตรียมหนวยความจํ าหลักไวจํานวนหนึ่งเปนที่พักขอมูลเรียกวา บัฟเฟอร(Buffer) • เมื่อมีการอานขอมูลในจานบันทึกขอมูลจํานวนหนึ่งจะถูก เคลื่อนยายมาไวในบัฟเฟอรเพื่อรอการนํ าไปประมวลผลตอไป 15 Structure Programming

  16. การเปิดและปิดแฟ้มข้อมูลการเปิดและปิดแฟ้มข้อมูล • ฟงกชันที่ใชในการเปดแฟมขอมูลคือ fopen(filename, mode) • ฟงกชันที่ใชในการปดแฟมขอมูลคือ fclose(file_pointer) • ตัวชี้ตําแหนงขอมูลในแฟม กําหนดใหมีชนิดของขอมูลเปน FILE 16 Structure Programming

  17. FILE *fp; fp = fopen(filename, mode); ................. ................. ................. ................. fclose(fp); ................. คำอธิบาย filename คือ ชื่อของแฟมขอมูลที่ตองการเปด mode คือ รหัสตัวอักษรที่จะแสดงภาวะใหทราบวา จะเปดแฟมขอมูลเพื่อทํางานอะไรบาง 17 Structure Programming

  18. ภาวะที่ใชในการเปดแฟมขอมูลเชิงขอความภาวะที่ใชในการเปดแฟมขอมูลเชิงขอความ “r+” “w+” “a+” n ถาตองการเปดแฟมขอมูลเชิงฐานสองใหใช “b” ควบ เชน “wb” “rb” “ab” “r+b” “w+b” และ “a+b” โดยมีความหมายในการทํางานเหมือนเดิม 18 Structure Programming

  19. การทำงานกับแฟ้มข้อมูลการทำงานกับแฟ้มข้อมูล • มีการทำงาน 2 แบบคือ • การอ่านข้อมูลจากแฟ้มข้อมูล • การบันทึกข้อมูลลงแฟ้มข้อมูล • ฟงกชันที่ใชในบันทึก / อ่านข้อมูลจากแฟ้มข้อมูล แบ่งเป็น 2 กลุ่มตามลักษณะของการใช้งานแฟ้มข้อมูล 19 Structure Programming

  20. การทำงานกับแฟ้มข้อมูลการทำงานกับแฟ้มข้อมูล 1.ฟงกชันที่ใชกับแฟมมาตรฐาน 1.1 การบันทึกและอานขอมูลครั้งละ 1ตัวอักขระ ใชฟงกชัน putc และ getc() 1.2 การบันทึกและการอานขอมูลแตละครั้งเปนขอความหรือสาย อักขระ ใชฟงกชัน fputs() และ fgets() 1.3 การบันทึกและอานขอมูลชนิดจำนวนเต็ม ใชฟงกชัน putw และ getw() 20 Structure Programming

  21. การทำงานกับแฟ้มข้อมูลการทำงานกับแฟ้มข้อมูล 1.ฟงกชันที่ใชกับแฟมมาตรฐาน 1.4 การบันทึกและการอานขอมูลแตละครั้งที่เปนไปตามรหัส รูปแบบของฟงกชันfprintf() และ fscanf() 1.5 การบันทึกและการอานขอมูลทีละระเบียนหรือทีละบล็อก ใชฟงกชัน fwrite() และ fread() 21 Structure Programming

  22. การทำงานกับแฟ้มข้อมูลการทำงานกับแฟ้มข้อมูล 2.ฟงกชันที่ใชกับแฟมระบบ • ฟงกชันในกลุมนี้มีลักษณะเดียว คือ ฟงกชันread() และฟังกชัน write() 22 Structure Programming

  23. สรุปฟงกชันที่ใชบันทึกและอานขอมูลสํ าหรับแฟมขอมูล 23 Structure Programming

  24. 1. การบันทึก/อานขอมูลดวยฟงกชัน putc() และ getc() 1. การบันทึกขอมูลดวยฟงกชัน putc() ใชบันทึกขอมูลทีละ 1อักขระ เขาไปในแฟมตรงตําแหนงที่ตัวชี้ตําแหนงชี้อยู รูปแบบ putc(ch, fp) ch คือตัวแปรชนิดอักขระที่ตองการบันทึกลงในแฟมขอมูล fp คือตัวชี้ที่อยูของขอมูลในแฟม 24 Structure Programming

  25. #include <stdio.h> #include <conio.h> void main() { char ch; FILE *fp; fp = fopen("c:\\textfile.txt",“w") ; printf("Enter test character : "); while ((ch=getche()) != '\r') { /* '\r' = Enter */ putc(ch,fp); /* put in file */ } fclose (fp) ; } ตัวอย่างที่ 1 25 Structure Programming

  26. #include <stdio.h> #include <conio.h> void main() { char ch; FILE *fp; char *fname; printf("Enter your file : "); scanf("%s",fname); fp = fopen(fname, "w") ; printf("Enter test character : "); while ((ch=getche()) != '\r') { /* '\r' = Enter */ putc(ch,fp); /* put in file */ } fclose (fp) ; } ตัวอย่างที่ 2 26 Structure Programming

  27. 1. การบันทึก/อานขอมูลดวยฟงกชัน putc() และ getc() 2. การอ่านขอมูลดวยฟงกชัน getc() ใชอานขอมูลจากแฟมขอมูลตรงตําแหนงที่ตัวชี้เลขที่อยูชี้อยูทีละ 1อักขระ char ch; ch = getc(fp) รูปแบบ ch คืออักขระที่อ่านได้จากแฟมขอมูล fp คือตัวชี้ที่อยูของขอมูลในแฟม 27 Structure Programming

  28. ตัวระบุ EOF บอกจุดจบของแฟม (End of File) จบแฟม EOF = 1 ยังไมจบแฟม EOF = 0 มีขอผิดพลาด EOF = -1 #include <stdio.h> #include <conio.h> void main() { char ch; FILE *fp; if ((fp=fopen("c:\\test.txt","r")) != NULL) { while((ch = getc(fp)) != EOF) { //putchar(ch); printf("%c", ch); } fclose(fp); } else printf ("Can't open file. \n") ; } ch = getc(fp); while(ch != EOF) { printf("%c", ch); ch = getc(fp); } ch = getc(fp); while(!feof(fp)) { printf("%c", ch); ch = getc(fp); } ตัวอย่างที่ 1 28 Structure Programming

  29. #include <stdio.h> #include <conio.h> void main() { char ch; FILE *fpin, *fpout; if ((fpin=fopen("c:\\input.txt","r")) != NULL) { if ((fpout=fopen("c:\\output.txt","w")) !=NULL) { while((ch=getc(fpin)) !=EOF) putc(ch,fpout); fclose(fpout); fclose(fpin); printf(“Copy completely. \n"); } else printf("Error in opening output file. \n"); } else printf("Error in opening input file "); } ตัวอย่างที่ 2 29 Structure Programming

  30. 2. การบันทึก/อานขอมูลดวยฟงกชัน fputs() และ fgets() 1. การบันทึกขอมูลดวยฟงกชัน fputs() ใชบันทึกขอมูลทีละ 1ข้อความ เขาไปในแฟมตรงตําแหนงที่ตัวชี้ตําแหนงชี้อยู รูปแบบ fputs(str, fp) str คือข้อความที่ตองการบันทึกลงในแฟมขอมูล fp คือตัวชี้ที่อยูของขอมูลในแฟม 30 Structure Programming

  31. #include <stdio.h> #include <conio.h> void main() { char str[100]; FILE *fp; fp = fopen("c:\\testfile.txt", "w") ; printf("Enter test message : "); gets(str); fputs(str,fp); /* put in file */ fclose (fp); } 31 Structure Programming

  32. 2. การบันทึก/อานขอมูลดวยฟงกชัน fputs() และ fgets() 2. การอ่านขอมูลดวยฟงกชัน fgets() ใชอานขอมูลทีละ 1ข้อความตรงตํ าแหนงทีละตัวเลขที่ชี้อยู fgets(str, num, fp) รูปแบบ str คือ ข้อความ num คือ จํานวนไบตที่ตองการใหอาน fp คือ ตัวชี้ตําแหนงขอมูลในแฟมที่ตองการอาน 32 Structure Programming

  33. #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { FILE *fp; char str [76] ; if ((fp=fopen("c:\\testfile.txt","r")) == NULL) { printf("Cannot open file"); } else { fgets(str, 4, fp); printf("%s",str) ; fclose(fp) ; } } 33 Structure Programming

  34. 3. การบันทึก/อานขอมูลดวยฟงกชัน putw() และ getw() 1. การบันทึกขอมูลดวยฟงกชัน putw() ใชบันทึกขอมูลชนิดจำนวนเต็ม เขาไปในแฟมตรงตําแหนงที่ตัวชี้ตําแหนงชี้อยู รูปแบบ putw(i, fp) i คือข้อมูลชนิดจำนวนเต็มที่ตองการบันทึกลงในแฟมขอมูล fp คือตัวชี้ที่อยูของขอมูลในแฟม 34 Structure Programming

  35. #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { FILE *fp; fp = fopen("c:\\int_file.txt","w"); for (int i=1; i<=10; i++) if(putw(i, fp) == EOF) { /* put in file */ printf("Error in writing file\n"); exit(0); } printf("Successful Writing !!!"); fclose(fp); } 35 Structure Programming

  36. 3. การบันทึก/อานขอมูลดวยฟงกชัน putw() และ getw() 2. การอ่านขอมูลดวยฟงกชัน getw() ใช้อ่านขอมูลชนิดจำนวนเต็ม จากแฟมตรงตําแหนงที่ตัวชี้ตําแหนงชี้อยู int i; i = getw(fp) รูปแบบ i คือข้อมูลชนิดจำนวนเต็มที่ตองการอ่านจากแฟมขอมูล fp คือตัวชี้ที่อยูของขอมูลในแฟม 36 Structure Programming

  37. #include <stdio.h> #include <conio.h> void main() { char ch; FILE *fp; int i; fp = fopen("c:\\int_file.txt","r") ; while (!feof(fp)) { i = getw(fp); /* put in file */ printf("%d\n",i); } fclose(fp);// ***** } 37 Structure Programming

  38. 4. การบันทึก/อานขอมูลดวยฟงกชัน fprintf() และ fscanf() 1. การบันทึกขอมูลดวยฟงกชัน fprintf() ใชบันทึกขอมูลทีละ 1ข้อความ ตามรูปแบบสํ าหรับของฟงกชัน printf () เขาไปในแฟมตรงตํ าแหนงที่ตัวชี้ตําแหนงชี้อยู่ fprintf(fp, formatted string, argument list) รูปแบบ fp คือ ตัวชี้ตําแหนงขอมูลในแฟมที่ตองการบันทึก formatted string คือ รหัสรูปแบบของ printf () argument list คือ รายการตัวแปรหรือคาคงที่ที่ตองการเก็บในแฟม 38 Structure Programming

  39. #include <stdio.h> #include <conio.h> void main() { FILE *fp; char name[25]; int credit; float average; fp=fopen ("c:\\grade.rec","w+") ; printf("Type name, total credit, grade average : \n"); scanf("%s %d %f",name, &credit, &average); fprintf(fp,"%s %d %.2f",name, credit, average); fclose (fp) ; } 39 Structure Programming

  40. 4. การบันทึก/อานขอมูลดวยฟงกชัน fprintf() และ fscanf() 2. การอ่านขอมูลดวยฟงกชัน fscanf() ใชอานขอมูลจากแฟมขอมูลตรงตํ าแหนงที่ตัวชี้ ชี้อยูทีละ 1 ข้อความตามรูปแบบของ scanf() fscanf(fp, formatted string, argument list) รูปแบบ fp คือ ตัวชี้ตําแหนงขอมูลในแฟมที่ตองการอาน formatted string คือ รหัสรูปแบบของ scanf () argument list คือ รายการตัวแปรหรือคาคงที่ที่ตองการอ่านจากแฟม 40 Structure Programming

  41. #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { FILE *fp; char name[25]; int credit; float average; if ((fp=fopen("c:\\grade.rec","r")) == NULL) { printf ("Can't open file \n") ; exit(1); } while(fscanf(fp,"%s %d %f",name,&credit,&average) != EOF) printf("%s %d %.2f\n",name, credit, average); fclose(fp) ; } 41 Structure Programming

  42. 5. การบันทึก/อานขอมูลดวยฟงกชัน fwrite() และ fread() 1. การบันทึกขอมูลดวยฟงกชัน fwrite() ใชบันทึกขอมูลจากบัฟเฟอรเขาไปในแฟมตรงตําแหนงที่ตัวชี้ ตําแหนงชี้อยูครั้งละ 1 บล็อก fwrite(&var, size, num, fp) รูปแบบ &var คือเลขที่อยูของขอมูลที่ตองการบันทึกเขาในแฟม size คือขนาดเปนไบตของบล็อกขอมูลที่ต้องการบันทึก num คือจํ านวนบล็อกที่ตองการใหบันทึกแตละครั้ง fp คือ ตัวชี้ตําแหนงขอมูลในแฟมที่ตองการบันทึก 42 Structure Programming

  43. #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { FILE *fp; int i = 10; float f = 10.5; char p[5] = "ABC"; if ((fp=fopen("c:\\test.txt","w")) == NULL) { printf ("Error in opening file\n") ; exit(1); } fwrite(&p, sizeof(p), 1, fp); if (ferror(fp)){ printf("Error in writing file\n"); exit(1); } printf("Successful !!!"); fclose(fp); } ตัวอย่างที่ 1 43 Structure Programming

  44. #include <stdio.h> #include <conio.h> #include <stdlib.h> struct Customer_Struct { char Cus_ID[6]; char Cus_Name[50]; char Cus_Tel[15]; char Cus_Addr[100]; } Customer; void main() { FILE *fp; char fname[15]; printf("Open new file and write data in\n"); printf("Enter file name: "); gets(fname); if ((fp=fopen(fname,"w")) == NULL) { //if error printf("Can't open file\n"); exit (1); } ตัวอย่างที่ 2 44 Structure Programming

  45. do { /* if not error */ printf("\n---------------------------------\n"); printf("Customer ID <Enter = Exit> : "); gets(Customer.Cus_ID); if (Customer.Cus_ID[0] != '\0') { printf("Name : "); gets(Customer.Cus_Name) ; printf("Tel. : ") ; gets(Customer.Cus_Tel) ; printf("Address : ") ; gets(Customer.Cus_Addr); fwrite(&Customer,sizeof(Customer), 1,fp); /* write to file*/ if (ferror(fp)) { /* if error*/ printf("Can't write to file\n") ; exit(1) ; } } } while(Customer.Cus_ID[0] != '\0') ; /* if “Enter” then stop*/ printf("\n +++ Successful Writing !!! +++ \n"); fclose(fp); } ตัวอย่างที่ 2-ต่อ 45 Structure Programming

  46. 5. การบันทึก/อานขอมูลดวยฟงกชัน fwrite() และ fread() 2. การอ่านขอมูลดวยฟงกชัน fread() ใชอานขอมูลจากแฟมขอมูลทีละ 1 บล็อก ตรงตําแหนงที่ตัวชี้ ตำแหน่งชี้อยูเขาไปเก็บในบัฟเฟอร fread(&var,size,num,fp) รูปแบบ &var คือ เลขที่อยูของตัวแปรที่ตองการอานขอมูลจากแฟมเขาไปเก็บ size คือขนาดเปนไบตของบล็อกขอมูล num คือจํ านวนบล็อกที่ตองการใหอ่านแตละครั้ง fp คือ ตัวชี้ตําแหนงขอมูลในแฟมที่ตองการอ่าน 46 Structure Programming

  47. #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { FILE *fp; int i = 10; float f = 10.5; char p[5]; if ((fp=fopen("c:\\test.txt",“r")) == NULL) { printf ("Error in opening file\n") ; exit(1); } fread(&p, sizeof(p), 1, fp); if (ferror(fp)){ printf("Error in reading file\n"); exit(1); } printf(“%s”, p); fclose(fp); } ตัวอย่างที่ 1 47 Structure Programming

  48. #include <stdio.h> #include <conio.h> #include <stdlib.h> struct Customer_Struct { char Cus_ID[6]; char Cus_Name[50]; char Cus_Tel[15]; char Cus_Addr[100]; } Customer; void main() { FILE *fp; char fname[15]; printf("Open file and read data in\n"); printf("Enter file name: "); gets(fname); if ((fp=fopen(fname,"r")) == NULL) { //if error printf("Can't open file\n"); exit (1); } ตัวอย่างที่ 2 48 Structure Programming

  49. printf("Data from file : "); while(fread(&Customer,sizeof(Customer),1,fp) == 1) { if(ferror(fp)) { printf("Can't read from file\n"); exit(1) ; } printf("ID : %s\n", Customer.Cus_ID); /* display */ printf("Name : %s\n",Customer.Cus_Name); printf("Telephone : %s\n",Customer.Cus_Tel); printf("Address : %s\n", Customer.Cus_Addr); printf("\n-----------------------------------------\n"); } fclose(fp); } ตัวอย่างที่ 2-ต่อ 49 Structure Programming

  50. แฟ้มข้อมูล และฟังก์ชัน • การส่งแฟ้มข้อมูลไปยังฟังก์ชันย่อย • การคืนแฟ้มข้อมูลกลับไปยังฟังก์ชัน Main 50 Structure Programming

More Related