การดำเนินการที่สามารถดำเนินการกับไฟล์ในภาษา C ได้มีดังนี้ −
- การตั้งชื่อไฟล์
- กำลังเปิดไฟล์
- การอ่านจากไฟล์
- กำลังเขียนลงในไฟล์
- กำลังปิดไฟล์
ไวยากรณ์
ไวยากรณ์สำหรับการเปิดและตั้งชื่อไฟล์ เป็นดังนี้ −
FILE *File pointer;
ตัวอย่างเช่น FILE * fptr;
File pointer = fopen ("File name”, "mode”); ตัวอย่างเช่น fptr =fopen ("sample.txt", "r")
FILE *fp;
fp = fopen ("sample.txt”, "w”); โหมดการเปิดไฟล์
โหมดการเปิดไฟล์ในภาษา C มีคำอธิบายด้านล่าง -
| โหมด | คำอธิบาย |
|---|---|
| r | ไฟล์ถูกเปิดสำหรับการอ่าน |
| w | ไฟล์ถูกเปิดสำหรับการเขียน |
| a+ | ไฟล์ที่เปิดสำหรับผนวก |
| r+ | เปิดไฟล์สำหรับอ่านและเขียน |
| w+ | ไฟล์ที่เปิดสำหรับเขียนและอ่าน |
| a+ | ไฟล์ที่เปิดสำหรับการผนวก &อ่าน |
| rt | ไฟล์ข้อความถูกเปิดสำหรับการอ่าน |
| น้ำหนัก | ไฟล์ข้อความถูกเปิดสำหรับการเขียน |
| ที่ | ไฟล์ข้อความถูกเปิดสำหรับการต่อท้าย |
| r+t | เปิดไฟล์ข้อความสำหรับอ่านและเขียน |
| w+t | เปิดไฟล์ข้อความสำหรับทั้งการเขียนและการอ่าน |
| a+t | เปิดไฟล์ข้อความสำหรับการต่อท้ายและการอ่าน |
| rb | เปิดไฟล์ไบนารีสำหรับการอ่าน |
| wb | เปิดไฟล์ไบนารีสำหรับเขียน |
| ab | เปิดไฟล์ไบนารีสำหรับการต่อท้าย |
| r+b | เปิดไฟล์ไบนารีสำหรับทั้งการอ่านและการเขียน |
| w+b | เปิดไฟล์ไบนารีสำหรับทั้งการเขียนและการอ่าน |
| a+b | เปิดไฟล์ไบนารีสำหรับทั้งการต่อท้ายและการอ่าน |
- เขียนโหมดการเปิดไฟล์
ไวยากรณ์มีดังนี้ −
FILE *fp;
fp = fopen ("sample.txt”, "w”); หากไฟล์นั้นไม่มีอยู่ ไฟล์ใหม่จะถูกสร้างขึ้น
หากไฟล์นั้นมีอยู่ เนื้อหาเก่าจะถูกลบและเนื้อหาปัจจุบันจะถูกจัดเก็บ
- โหมดอ่านการเปิดไฟล์
ไวยากรณ์มีดังนี้ −
FILE *fp
fp =fopen ("sample.txt”, "r”); หากไฟล์ไม่มีอยู่ ฟังก์ชัน fopen จะคืนค่า NULL
หากมีไฟล์อยู่ ข้อมูลจากไฟล์จะถูกอ่านสำเร็จ
- ต่อท้ายโหมดของการเปิดไฟล์
ไวยากรณ์มีดังนี้ −
FILE *fp;
fp =fopen ("sample.txt", "a"); หากไม่มีไฟล์อยู่ ระบบจะสร้างไฟล์ใหม่
หากมีไฟล์อยู่ เนื้อหาปัจจุบันจะถูกเพิ่มไปยังเนื้อหาเก่า
| โหมด | ออก | ไม่ออก |
|---|---|---|
| R | อ่าน | fp="NULL" |
| W | เนื้อหาปัจจุบัน | ไฟล์ใหม่จะถูกสร้างขึ้น |
| A | เนื้อหาเก่าเนื้อหาปัจจุบัน | ไฟล์ใหม่จะถูกสร้างขึ้น |
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C สำหรับการดำเนินการกับไฟล์ -
//Program for copying the contents of one file into another file
#include <stdio.h>
#include <stdlib.h> // For exit()
int main(){
FILE *fptr1, *fptr2;
char filename[100], c;
printf("Enter the filename to open for reading \n");
scanf("%s",filename);
// Open one file for reading
fptr1 = fopen(filename, "r");
if (fptr1 == NULL){
printf("Cannot open file %s \n", filename);
exit(0);
}
printf("Enter the filename to open for writing \n");
scanf("%s", filename);
// Open another file for writing
fptr2 = fopen(filename, "w");
if (fptr2 == NULL){
printf("Cannot open file %s \n", filename);
exit(0);
}
// Read contents from file
c = fgetc(fptr1);
while (c != EOF){
fputc(c, fptr2);
c = fgetc(fptr1);
}
printf("\nContents copied to %s", filename);
fclose(fptr1);
fclose(fptr2);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter the filename to open for reading file2.txt Enter the filename to open for writing file1.txt Contents copied to file1.txt