ไฟล์คือชุดของเรคคอร์ดหรือเป็นที่บนฮาร์ดดิสก์ซึ่งข้อมูลจะถูกเก็บไว้อย่างถาวร
ความต้องการของไฟล์
-
ข้อมูลทั้งหมดจะหายไปเมื่อโปรแกรมหยุดทำงาน
-
การจัดเก็บในไฟล์จะรักษาข้อมูลไว้แม้ว่าโปรแกรมจะยุติการทำงานก็ตาม
-
หากคุณต้องการป้อนข้อมูลจำนวนมาก โดยปกติจะใช้เวลามากในการป้อนข้อมูลทั้งหมด
-
เราสามารถเข้าถึงเนื้อหาของไฟล์ได้อย่างง่ายดายโดยใช้คำสั่งไม่กี่คำ
-
คุณสามารถย้ายข้อมูลจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้อย่างง่ายดายโดยไม่มีการเปลี่ยนแปลง
-
ด้วยการใช้คำสั่ง C เราสามารถเข้าถึงไฟล์ได้หลายวิธี
การทำงานของไฟล์
การทำงานของไฟล์ในภาษาซีมีดังนี้ -
- การตั้งชื่อไฟล์
- การเปิดไฟล์
- การอ่านจากไฟล์
- การเขียนลงในไฟล์
- ปิดไฟล์
ไวยากรณ์
ไวยากรณ์สำหรับ การประกาศตัวชี้ไฟล์ เป็นดังนี้ −
FILE *File pointer;
ตัวอย่างเช่น FILE * fptr;
ไวยากรณ์สำหรับการตั้งชื่อและการเปิดตัวชี้ไฟล์ เป็นดังนี้ −
File pointer = fopen ("File name", "mode"); ตัวอย่างเช่น
FILE *fp;
fp = fopen ("sample.txt", "w"); โปรแกรม1
ต่อไปนี้เป็นโปรแกรม C เพื่ออ่านชื่อและเครื่องหมายของนักเรียนจำนวน n คนและจัดเก็บไว้ในไฟล์ -
#include <stdio.h>
int main(){
char name[50];
int marks, i, num;
printf("Enter number of students: ");
scanf("%d", &num);
FILE *fptr;
fptr = (fopen("std.txt", "w")); // opening file in write mode
if(fptr == NULL){
printf("Error!");
exit(1);
}
for(i = 0; i < num; ++i){
printf("For student%d\nEnter name: ", i+1);
scanf("%s", name);
printf("Enter marks: ");
scanf("%d", &marks);
fprintf(fptr,"\nName: %s \nMarks=%d \n", name, marks);
}
fclose(fptr);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter number of students: 3 For student1 Enter name: lucky Enter marks: 59 For student2 Enter name: pinky Enter marks: 89 For student3 Enter name: bob Enter marks: 45
โปรแกรม2
ต่อไปนี้เป็นโปรแกรม C สำหรับจัดเก็บรายละเอียดของพนักงานในไฟล์และพิมพ์เหมือนกัน -
#include<stdio.h>
int main ( ){
FILE *fp;
int eno;
char ename[30];
float sal;
fp =fopen ("emp.txt", "w"); // opening file in write mode
printf ("enter the details of eno, ename, sal:");
scanf ("%d%s%f", &eno, ename, &sal);
fprintf (fp, "%d%s%f", eno, ename, sal);
fclose (fp);
fp = fopen ("emp.txt", "r");
fscanf (fp, "%d%s%f", &eno, ename, &sal);
printf ("employee no: = %d\n", eno);
printf ("employee name = %s\n", ename);
printf ("salary = %f\n", sal);
fclose (fp);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
enter the details of eno, ename, sal:1 Pinky 34000 employee no: = 1 employee name = Pinky salary = 34000.000000