1 / 26

ทำไมต้องเขียนโปรแกรมติดต่อแฟ้มข้อมูล (File)

ทำไมต้องเขียนโปรแกรมติดต่อแฟ้มข้อมูล (File). การใช้ตัวแปรและประมวลผลตัวโปรแกรมทั้งหมด จะทำงานอยู่ในหน่วยความจำ (Memory) เท่านั้น นั่นก็หมายความว่าเมื่อโปรแกรมทำงานเสร็จข้อมูลต่าง ๆ ก็จะสูญหายไป

corin
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) • การใช้ตัวแปรและประมวลผลตัวโปรแกรมทั้งหมด จะทำงานอยู่ในหน่วยความจำ (Memory) เท่านั้น นั่นก็หมายความว่าเมื่อโปรแกรมทำงานเสร็จข้อมูลต่าง ๆ ก็จะสูญหายไป • ถ้าต้องการให้ข้อมูล (ผลลัพธ์) นั้นยังคงอยู่ เราสามารถทำได้โดยใช้หลักง่าย ๆ คือเขียนข้อมูลผลลัพธ์นั้น เก็บเอาไว้ในไฟล์นั่นเอง • การเขียนโปรแกรมเพื่อติดต่อไฟล์ ยังมีประโยชน์ในกรณีที่เรามีไฟล์ข้อมูล input อยู่แล้ว ต้องการอ่านมันขึ้นมาแล้วประมวลผล แทนที่จะต้องมานั่งคีย์ข้อมูลด้วยตนเองมาก ๆ

  2. ประเภทของไฟล์ • Text File (Sequential Access) (*) เป็นไฟล์ข้อมูล ที่เก็บพวกข้อความ (เปิดอ่านรู้เรื่อง) • Binary File (Random Access) เป็นไฟล์ข้อมูล ที่เก็บเป็น Binary (0/1) ดังนั้นถ้าเราใช้โปรแกรมเช่น Notepad เปิดก็จะอ่านไม่รู้เรื่อง สำหรับไฟล์ข้อมูลในภาษาซีที่ใช้ในการทำงานเพื่อเก็บข้อมูลแบ่งออกเป็น 2 ประเภทคือ

  3. รูปแบบการประกาศใช้งานตัวแปรสำหรับเรื่องการติดต่อไฟล์รูปแบบการประกาศใช้งานตัวแปรสำหรับเรื่องการติดต่อไฟล์ • FILE เป็นประเภทข้อมูล (data type) ที่ใช้งานกับไฟล์ คล้าย ๆ กับ int, char • *fpเป็นชื่อตัวแปร pointer ที่ใช้อ้างอิงพื้นที่การทำงาน FILE *fp; ในภาษาซี ตัวอักษรเล็ก กับ ใหญ่ มีความหมายต่างกัน (Case Sensitive) ซึ่ง FILE เป็น keyword ต้องเขียนด้วยตัวพิมพ์ใหญ่

  4. คำสั่งที่ใช้งานกับไฟล์ข้อมูลคำสั่งที่ใช้งานกับไฟล์ข้อมูล • การเปิดไฟล์ • การปิดไฟล์ • การตรวจสอบว่าในไฟล์ยังมีข้อมูลเหลืออยู่หรือไม่ • การอ่านข้อมูลจาก Text File • การเขียนข้อมูลลง Text File คำสั่งในการทำงานกับไฟล์มีมากมาย แต่ที่เราต้องรู้เพื่อทำงานกับ Text File ที่สำคัญมีดังนี้

  5. เรื่องของ Mode ในการเปิดไฟล์ สำหรับการทำงานกับ Text File เราต้องใส่อักษร “t” เพิ่มเข้าไปใน mode ด้วย (rt, w+t เป็นต้น) สำหรับการทำงานกับ Binary File เราต้องใส่อักษร “b” เพิ่มเข้าไปใน mode ด้วย (wb, a+b เป็นต้น)

  6. การเปิดไฟล์ รูปแบบFILE *fp; fp = fopen(“file name”,“mode”); FILE คือ ประโยคที่ระบุว่าจะมีการใช้ไฟล์ข้อมูล  fp คือ ชื่อตัวแปร pointer ที่จะชี้ไปหาไฟล์ที่เราต้องการ นักศึกษาจะตั้งว่าอะไรก็ได้  fopenคือ คำสั่งสำหรับเปิดไฟล์  file name คือ ให้นักศึกษาระบุชื่อไฟล์พร้อมนามสกุล ที่ต้องการให้ไปเปิด  modeคือ ให้นักศึกษาระบุโหมดในการเปิด เนื่องจากในภาษาซีต้องระบุ ด้วยว่าจะให้เปิดเพื่ออะไร เช่น เปิดเพื่ออ่าน, เขียน, เขียนต่อท้าย เป็นต้น

  7. การปิดไฟล์ • fcloseคือ คำสั่งสำหรับปิดไฟล์ • fp คือ ชื่อตัวแปร pointer ที่จะชี้ไปหาไฟล์นั้น ๆ ใช้คำสั่ง fcloseเมื่อเราใช้งานไฟล์เสร็จ หรือต้องการเปลี่ยน mode fclose(fp);

  8. การตรวจสอบว่ายังมีข้อมูลเหลืออยู่ในไฟล์หรือไม่การตรวจสอบว่ายังมีข้อมูลเหลืออยู่ในไฟล์หรือไม่ • feof คือ คำสั่งตรวจสอบว่ายังมีข้อมูลอยู่ในไฟล์อีกหรือไม่ • fp คือ ชื่อตัวแปร pointer ที่จะชี้ไปหาไฟล์นั้น ๆ feof(fp);

  9. การอ่านข้อมูลจาก Text File fscanf คล้าย ๆ กับคำสั่ง scanf ที่ทำงานกับ Memory ซึ่งเวลาโปรแกรมทำงาน โปรแกรมก็ยังคงต้องอ่านข้อมูลเข้าไปเก็บใน Memory เช่นเดิม ดังนั้น เมื่อเราใช้คำสั่งอ่านข้อมูลจากไฟล์ จึงต้องมีตัวแปรมารอรับ โดยมีรูปแบบการเขียนคำสั่งคือ • fscanfคือ ที่ใช้อ่านข้อมูลขึ้นมาจากไฟล์ • fp คือ ชื่อตัวแปร pointer ที่จะชี้ไปหาไฟล์นั้น ๆ • fnameคือ ชื่อตัวแปร ที่เราจะเอาไว้เก็บค่า String โดยจะเก็บ String ไปเรื่อย ๆ จนกว่าจะเจอช่องว่าง (space) • lnameคือ ชื่อตัวแปร ที่เราจะเอาไว้เก็บค่า String ต่อมาที่เจอ fscanf (fp, "%s %s", fname, lname);

  10. การอ่านข้อมูลจาก Text File • คำว่า Janes จะถูกเอาไปเก็บในตัวแปร fname • คำว่า Green จะถูกเอาไปเก็บในตัวแปร lname fscanf (fp, "%s %s", fname, lname); ในกรณีของตัวอย่างนี้นั่นหมายความว่าไฟล์ข้อมูลจะต้องมีลักษณะเป็นดังตัวอย่าง Janes Green สำหรับการอ่านข้อมูลประเภทตัวเลขขึ้นมาคำนวณ ให้อ่านขึ้นมาโดยมองเป็น String ก่อนทั้งหมด เมื่อข้อมูลอยู่ใน Memory แล้วจึงค่อยเปลี่ยนให้มูลให้เป็น int, float หรืออื่น ๆ เพื่อนำไปใช้ต่อไป

  11. การเขียนข้อมูลลง Text File • fprintfคือ ที่ใช้เขียนข้อมูลลงไฟล์ • fp คือ ชื่อตัวแปร pointer ที่จะชี้ไปหาไฟล์นั้น ๆ • nameคือ ชื่อตัวแปร ที่เก็บ String ที่เราต้องการจะเขียนลงไฟล์ • ageคือ ชื่อตัวแปร ที่เก็บค่าจำนวนเต็ม ที่เราต้องการจะเขียนลงไฟล์ fprintf (fp, "%s %d", name, age);

  12. การเขียนข้อมูลลง Text File fprintf (fp, "%s %d", name, age); ในกรณีของตัวอย่างนี้ ถ้าตัวแปร name เก็บค่า Jenes ส่วนตัวแปร age เก็บค่า 30 นั่นหมายความว่าไฟล์ข้อมูลจะต้องมีลักษณะเป็นดังตัวอย่าง Jenes 30

  13. การเขียนข้อมูลลง Text File สำหรับการเขียนข้อมูลลงไฟล์ ในเรื่องของชนิดของตัวแปรไม่ต้องคำนึงถึง เราสามารถใช้ตัวแปรประเภทต่าง ๆ เช่น int, float, char เขียนลงไฟล์ได้ แต่เมื่อข้อมูลถูกเขียนลงไปแล้ว ทั้งหมดก็จะกลายเป็น Text ซึ่งก็คือ String นั่นเอง ในกรณีที่นักศึกษาต้องการจัดรูปแบบในการเขียนข้อมูลลงไฟล์ ก็สามารถทำได้ เช่น fprintf (fp, "%s\t%d", name, age); กรณีนี้ในไฟล์ก็จะกลายเป็น Jenes 30 *****รูปแบบของข้อมูลไฟล์ ในตอนอ่านด้วย fscanf ก็ควรจะสอดคล้องกันด้วย*****

  14. ไฟล์ข้อมูล (Data File) getc() หรือ fgetc() เป็นฟังก์ชันที่ใช้อ่านข้อมูลทีละ 1 ตัวอักษรจากไฟล์ข้อมูล รูปแบบ getc (fp) เมื่อ fp = ตัวแปรpointer ที่ชี้ไปยังไฟล์ข้อมูล

  15. ไฟล์ข้อมูล (Data File) putc() หรือ fputc() เป็นฟังก์ชันที่ใช้เขียนข้อมูลทีละ 1 ตัวอักษรไปเก็บที่ไฟล์ข้อมูล รูปแบบputc(ch,fp) เมื่อ ch = ตัวแปรที่จะนำข้อมูลไปเก็บไว้ fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล

  16. ไฟล์ข้อมูล (Data File) fgets() เป็นฟังก์ชันที่ใช้อ่านข้อมูลจากไฟล์ข้อมูลเป็นข้อความ (String) เข้ามาเก็บที่ ตัวแปรอาร์เรย์ หรือจนกว่าจะพบ “\n” หากผิดพลาดจะส่งค่า NULL กลับมา รูปแบบfgets (str,num,fp) เมื่อ str = ตัวแปรอาร์เรย์ที่ใช้เก็บข้อมูล num = จำนวนไบต์ที่ต้องการอ่านข้อมูลต่อครั้ง fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล

  17. ไฟล์ข้อมูล (Data File) fputs() เป็นฟังก์ชันที่ใช้เก็บข้อมูลลงไฟล์ข้อมูลเป็นข้อความ (String) หากผิดพลาดจะส่งค่า NULL กลับมา รูปแบบfputs (str,fp) เมื่อ str = ตัวแปรอาร์เรย์ที่ใช้เก็บข้อมูล fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล

  18. ไฟล์ข้อมูล (Data File) fprintf() มีรูปแบบและการทำงานคล้ายกับ printf() เพียงแต่ทำงานกับไฟล์ข้อมูลเท่านั้น รูปแบบfprintf(fp,”control”,argument); เมื่อ fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล control = รหัสควบคุมการบันทึก argument = ค่าคงที่ ตัวแปร หรือนิพจน์

  19. ไฟล์ข้อมูล (Data File) fprintf() ตัวอย่าง fprintf (fp,”%s %d”,name,salary); เมื่อ fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล control = ”%s %d” argument = name,salary

  20. ไฟล์ข้อมูล (Data File) fscanf() เป็นฟังก์ชั่นอ่านข้อมูลจากไฟล์ มีรูปแบบและการทำงานคล้ายกับ scanf() เพียงแต่ทำงานกับไฟล์ข้อมูลเท่านั้น รูปแบบ fscanf (fp,”control”,argument); เมื่อ fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล control = รหัสควบคุมการบันทึก argument = ค่าคงที่ ตัวแปร หรือนิพจน์

  21. ไฟล์ข้อมูล (Data File) fscanf() ตัวอย่างfscanf (fp,”%s %d”,&name,&salary); เมื่อ fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล control = ”%s %d” argument = &name,&salary

  22. ไฟล์ข้อมูล (Data File) feof() เป็นการตรวจสอบการสิ้นสุดของข้อมูลที่อ่าน ถ้าสิ้นสุดแล้วจะส่งตัวเลขที่ไม่ใช่ 0 กลับมา รูปแบบfeof(fp); เมื่อ fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล

  23. ไฟล์ข้อมูล (Data File) ferror() เป็นการตรวจสอบการผิดพลาดที่เกิดขึ้นจากการอ่านข้อมูล ถ้าเกิดการผิดพลาดขึ้น จะส่งค่าตัวเลขที่ไม่ใช่ 0 กลับมา รูปแบบ ferror (fp); เมื่อ fp = ตัวแปร pointer ที่ชี้ไปยังไฟล์ข้อมูล

  24. #include <conio.h> #include <stdio.h> void main() { char ch,name[10]; int salary; FILE *fp; clrscr(); fp = fopen("ex1.dat","w"); printf("enter your name "); scanf("%s",name); printf("enter salary "); scanf("%d",&salary); fprintf(fp,"%s %d",name,salary); fclose(fp); }

  25. #include <conio.h> #include <stdio.h> void main() { char ch,name[10]; int salary; FILE *fp; clrscr(); fp = fopen("ex1.dat","a"); printf("enter your name "); scanf("%s",name); printf("enter salary "); scanf("%d",&salary); fprintf(fp,"%s %d",name,salary); fclose(fp); }

  26. #include <conio.h> #include <stdio.h> void main() { char ch,name[10]; int salary; float tax; FILE *fp; clrscr(); fp = fopen("ex1.dat","r"); while(!feof(fp)) { fscanf(fp,"%s %d",&name,&salary); tax = salary*3/100; printf("\n %s %d %d",name,salary,tax); } getch(); fclose(fp); }

More Related