Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ฟังก์ชัน fread() และ fwrite() อ่าน/เขียนโครงสร้าง (Struct) ลงไฟล์ใน C


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