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

การดำเนินการกับไฟล์ (File Operations) ในภาษา C - คู่มือครบถ้วน


5 การดำเนินการหลักกับไฟล์

  1. Naming - ตั้งชื่อไฟล์
  2. Opening - เปิดไฟล์ด้วย fopen()
  3. Reading - อ่านข้อมูลด้วย fgetc(), fgets(), fscanf(), fread()
  4. Writing - เขียนข้อมูลด้วย fputc(), fputs(), fprintf(), fwrite()
  5. Closing - ปิดไฟล์ด้วย fclose()

โหมดการเปิดไฟล์ (File Modes)

Modeคำอธิบาย
rเปิดเพื่ออ่าน (ต้องมีไฟล์อยู่แล้ว)
wเปิดเพื่อเขียน (สร้างใหม่/ทับไฟล์เดิม)
aเปิดเพื่อต่อท้าย (Append)
r+เปิดอ่านและเขียน (ต้องมีไฟล์อยู่แล้ว)
w+เปิดเขียนและอ่าน (สร้างใหม่/ทับไฟล์เดิม)
a+เปิดต่อท้ายและอ่าน
rb, wb, abโหมด Binary (สำหรับไฟล์รูปภาพ เสียง เป็นต้น)
r+b, w+b, a+bBinary + อ่าน/เขียน

พฤติกรรมของแต่ละโหมด

Modeไฟล์มีอยู่แล้วไฟล์ไม่มีอยู่
rอ่านได้คืนค่า NULL (Error)
wลบเนื้อหาเดิม ทับใหม่สร้างไฟล์ใหม่
aต่อท้ายเนื้อหาเดิมสร้างไฟล์ใหม่

ตัวอย่างโปรแกรม: คัดลอกไฟล์ (ซ้ำจากบทความก่อนแต่ครบถ้วนกว่า)

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fptr1, *fptr2;
    char filename[100], ch;
    
    printf("Enter filename to read: ");
    scanf("%s", filename);
    fptr1 = fopen(filename, "r");
    if (!fptr1) { printf("Cannot open %s\n", filename); exit(1); }
    
    printf("Enter filename to write: ");
    scanf("%s", filename);
    fptr2 = fopen(filename, "w");
    if (!fptr2) { printf("Cannot open %s\n", filename); fclose(fptr1); exit(1); }
    
    while ((ch = fgetc(fptr1)) != EOF)
        fputc(ch, fptr2);
    
    printf("Contents copied to %s\n", filename);
    fclose(fptr1); fclose(fptr2);
    return 0;
}

ฟังก์ชันอ่าน/เขียนเพิ่มเติม

  • fgets(str, n, fp) - อ่าน 1 บรรทัด (ปลอดภัยกว่า gets)
  • fputs(str, fp) - เขียนสตริง 1 บรรทัด
  • fprintf(fp, format, ...) - เขียนแบบจัดรูปแบบ (เหมือน printf)
  • fscanf(fp, format, ...) - อ่านแบบจัดรูปแบบ (เหมือน scanf)
  • fread(ptr, size, count, fp) - อ่านบล็อกข้อมูล (Binary)
  • fwrite(ptr, size, count, fp) - เขียนบล็อกข้อมูล (Binary)