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

โปรแกรม C คัดลอกเนื้อหาไฟล์จากไฟล์หนึ่งไปอีกไฟล์หนึ่ง


การดำเนินการกับไฟล์ (File Operations)

ไฟล์คือที่เก็บข้อมูลถาวรบนฮาร์ดดิสก์ ภาษา C จัดการไฟล์ได้ผ่านขั้นตอน:

  1. ตั้งชื่อไฟล์ (Naming)
  2. เปิดไฟล์ (Opening)
  3. อ่านจากไฟล์ (Reading)
  4. เขียนลงไฟล์ (Writing)
  5. ปิดไฟล์ (Closing)

ไวยากรณ์สำคัญ

การทำงานไวยากรณ์ตัวอย่าง
ประกาศ File PointerFILE *fp;FILE *fptr;
เปิดไฟล์fp = fopen("filename", "mode");fptr = fopen("sample.txt", "r");
อ่าน 1 ตัวอักษรfgetc(fp)ch = fgetc(fptr);
เขียน 1 ตัวอักษรfputc(ch, fp)fputc(ch, fptr);

โปรแกรมคัดลอกไฟล์สมบูรณ์

#include <stdio.h>
#include <stdlib.h> // สำหรับ exit()

int main() {
    FILE *fptr1, *fptr2;
    char filename[100], ch;
    
    // เปิดไฟล์ต้นทางอ่าน
    printf("Enter source filename: ");
    scanf("%s", filename);
    fptr1 = fopen(filename, "r");
    if (fptr1 == NULL) {
        printf("Cannot open file %s\n", filename);
        exit(1);
    }
    
    // เปิดไฟล์ปลายทางเขียน
    printf("Enter destination filename: ");
    scanf("%s", filename);
    fptr2 = fopen(filename, "w");
    if (fptr2 == NULL) {
        printf("Cannot open file %s\n", filename);
        fclose(fptr1);
        exit(1);
    }
    
    // คัดลอกทีละตัวอักษร
    ch = fgetc(fptr1);
    while (ch != EOF) {
        fputc(ch, fptr2);
        ch = fgetc(fptr1);
    }
    
    printf("\nContents copied to %s", filename);
    fclose(fptr1);
    fclose(fptr2);
    return 0;
}

ผลลัพธ์ตัวอย่าง:


Enter source filename: file3.txt
Enter destination filename: file1.txt
Contents copied to file1.txt

ข้อสังเกตสำคัญ

  • ตรวจสอบ NULL หลัง fopen() เสมอ
  • ปิดไฟล์ด้วย fclose() ทุกครั้ง
  • โหมด "w" จะลบเนื้อหาเดิมทิ้ง หากต้องการต่อท้ายใช้ "a"
  • สำหรับไฟล์ไบนารี ใช้ "rb" และ "wb" แทน