การดำเนินการที่สามารถดำเนินการกับไฟล์ในภาษา 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