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

การใช้ fopen() เปิดไฟล์ที่มีอยู่แล้วในโหมด Write ในภาษา C


ฟังก์ชัน fopen() ในภาษา C ใช้สำหรับเปิดไฟล์ที่ระบุ

Syntax

FILE *fopen(filename, mode)

Mode ที่ถูกต้อง: 'r', 'w', 'a', 'r+', 'w+', 'a+' (รายละเอียดดูใน C library reference)

fopen() สำหรับไฟล์ที่มีอยู่แล้วในโหมด Write ('w' / 'w+')

  • ถ้าไฟล์ ไม่มีอยู่: สร้างไฟล์ใหม่ว่างเปล่า
  • ถ้าไฟล์ มีอยู่แล้ว: ลบเนื้อหาเดิมทั้งหมด ก่อนเขียนข้อมูลใหม่ (Truncate)

ตัวอย่าง: เขียนทับไฟล์ที่มีอยู่

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

int main() {
    FILE *opFile = fopen("test.txt", "w");
    if (opFile == NULL) {
        puts("Couldn't open file");
        exit(0);
    } else {
        fputs("includehelp", opFile);
        puts("Write operation successful");
        fclose(opFile);
    }
    return 0;
}

ผลลัพธ์

Write operation successful

สถานะไฟล์:

  • เนื้อหาเดิม: C programming language
  • เนื้อหาหลังเขียน: includehelp (ข้อมูลเดิมหายไปทั้งหมด)

วิธีแก้ปัญหา: โหมดอื่นที่ปลอดภัยกว่า

1. โหมด 'a' (Append) - เพิ่มข้อมูลต่อท้าย

FILE *opFile = fopen("test.txt", "a");

ผลลัพธ์: เนื้อหาเดิมคงอยู่ เพิ่ม "includehelp" ต่อท้าย → C programming language includehelp

2. โหมด 'wx' (Exclusive Create) - ป้องกันเขียนทับ

FILE *opFile = fopen("test.txt", "wx");

ผลลัพธ์: คืนค่า NULL หากไฟล์มีอยู่แล้ว (ไม่เขียนทับ) ต้องตรวจสอบ NULL เสมอ

สรุป: ใช้ 'w' เมื่อต้องการเขียนทับ ใช้ 'a' เมื่อต้องการเพิ่มข้อมูล ใช้ 'wx' เมื่อต้องการสร้างไฟล์ใหม่เท่านั้น

No