ไฟล์คือชุดของเรคคอร์ดหรือเป็นที่บนฮาร์ดดิสก์ซึ่งข้อมูลจะถูกเก็บไว้อย่างถาวร
การทำงานของไฟล์
การทำงานของไฟล์ในภาษาซีมีดังนี้ -
- การตั้งชื่อไฟล์
- การเปิดไฟล์
- การอ่านจากไฟล์
- การเขียนลงในไฟล์
- ปิดไฟล์
ไวยากรณ์
ไวยากรณ์ในการเปิดไฟล์มีดังนี้ −
FILE *File pointer;
ตัวอย่างเช่น FILE * fptr;
ไวยากรณ์สำหรับการตั้งชื่อไฟล์มีดังนี้ -
File pointer = fopen ("File name", "mode"); ตัวอย่างเช่น
fptr = fopen ("sample.txt", "r");
FILE *fp;
fp = fopen ("sample.txt", "w"); การจัดการข้อผิดพลาดในไฟล์
ข้อผิดพลาดบางอย่างในไฟล์มีดังนี้ -
- พยายามอ่านให้เกินกว่าจุดสิ้นสุดของไฟล์
- อุปกรณ์ล้น
- กำลังพยายามเปิดไฟล์ที่ไม่ถูกต้อง
- ดำเนินการที่ไม่ถูกต้องโดยเปิดไฟล์ในโหมดอื่น
ferror( )
ใช้สำหรับตรวจจับข้อผิดพลาดขณะดำเนินการอ่าน/เขียน
ไวยากรณ์สำหรับฟังก์ชัน ferror() มีดังนี้ −
ไวยากรณ์
int ferror (file pointer);
ตัวอย่างเช่น
ตัวอย่าง
FILE *fp;
if (ferror (fp))
printf ("error has occurred"); คืนค่าศูนย์หากสำเร็จและไม่ใช่ศูนย์มิฉะนั้น
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับใช้ฟังก์ชัน ferror() -
#include<stdio.h>
int main(){
FILE *fptr;
fptr = fopen("sample.txt","r");
if(ferror(fptr)!=0)
printf("error occurred");
putc('T',fptr);
if(ferror(fptr)!=0)
printf("error occurred");
fclose(fptr);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
error occurred Note: try to write a file in the read mode results an error.
ข้อผิดพลาด ( )
ใช้สำหรับพิมพ์ข้อผิดพลาด
ไวยากรณ์สำหรับฟังก์ชัน perror() มีดังนี้ -
ไวยากรณ์
perror (string variable);
ตัวอย่างเช่น
ตัวอย่าง
FILE *fp; char str[30] = "Error is"; perror (str);
ผลลัพธ์จะเป็นดังนี้ −
Error is: error 0
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับใช้ฟังก์ชัน perror() -
#include<stdio.h>
int main ( ){
FILE *fp;
char str[30] = "error is";
int i = 20;
fp = fopen ("sample.txt", "r");
if (fp == NULL){
printf ("file doesnot exist");
}
else{
fprintf (fp, "%d", i);
if (ferror (fp)){
perror (str);
printf ("error since file is opened for reading only");
}
}
fclose (fp);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
error is: Bad file descriptor error since file is opened for reading only
เฟอออฟ( )
ใช้สำหรับตรวจสอบว่าถึงจุดสิ้นสุดของไฟล์ (หรือไม่)
ไวยากรณ์สำหรับฟังก์ชัน feof() มีดังนี้ -
ไวยากรณ์
int feof (file pointer);
ตัวอย่างเช่น
ตัวอย่าง
FILE *fp;
if (feof (fp))
printf ("reached end of the file"); คืนค่าที่ไม่ใช่ศูนย์หากสำเร็จและเป็นศูนย์มิฉะนั้น
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับใช้ฟังก์ชัน feof() -
#include<stdio.h>
main ( ){
FILE *fp;
int i,n;
fp = fopen ("number. txt", "w");
for (i=0; i<=100;i= i+10){
putw (i, fp);
}
fclose (fp);
fp = fopen ("number. txt", "r");
printf ("file content is");
for (i=0; i<=100; i++){
n = getw (fp);
if (feof (fp)){
printf ("reached end of file");
break;
}else{
printf ("%d", n);
}
}
fclose (fp);
getch ( );
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
File content is 10 20 30 40 50 60 70 80 90 100 Reached end of the file.