fread() - อ่านระเบียน (Record) ทีละชุดจากไฟล์
Syntax
size_t fread(void *ptr, size_t size, size_t count, FILE *fp);
fwrite() - เขียนระเบียน (Record) ทีละชุดลงไฟล์
Syntax
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *fp);
ตัวอย่างโครงสร้างนักเรียน
struct student {
int sno;
char sname[30];
float marks;
char temp; // สำหรับรับ newline
};
โปรแกรมตัวอย่าง: บันทึกและอ่านข้อมูลนักเรียน 2 คน
#include <stdio.h>
struct student {
int sno;
char sname[30];
float marks;
char temp;
};
int main() {
struct student s[60];
int i;
FILE *fp;
// เขียนไฟล์
fp = fopen("student1.txt", "w");
for(i = 0; i < 2; i++) {
printf("Student %d\n", i+1);
printf("Number: "); scanf("%d", &s[i].sno);
scanf("%c", &s[i].temp); // กิน newline
printf("Name: "); gets(s[i].sname);
printf("Marks: "); scanf("%f", &s[i].marks);
fwrite(&s[i], sizeof(s[i]), 1, fp);
}
fclose(fp);
// อ่านไฟล์
fp = fopen("student1.txt", "r");
for(i = 0; i < 2; i++) {
fread(&s[i], sizeof(s[i]), 1, fp);
printf("Student %d: No=%d, Name=%s, Marks=%.2f\n",
i+1, s[i].sno, s[i].sname, s[i].marks);
}
fclose(fp);
return 0;
}
ผลลัพธ์
enter details of student 1
student number: 1
student name: pinky
student marks: 56
enter details of student 2
student number: 2
student name: rosy
student marks: 87
details of student 1 are
student number = 1
student name = pinky
marks = 56.000000
details of student 2 are
student number = 2
student name = rosy
marks = 87.000000