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

เทคนิคการจัดการข้อผิดพลาดในภาษา C คืออะไร?


ข้อผิดพลาดบางอย่างที่เกิดขึ้นในไฟล์มีดังต่อไปนี้ -

  • พยายามอ่านจนจบไฟล์
  • อุปกรณ์ล้น
  • กำลังพยายามเปิดไฟล์ที่ไม่ถูกต้อง
  • การดำเนินการที่ไม่ถูกต้องทำได้โดยการเปิดไฟล์ในโหมดอื่น

ฟังก์ชันสำหรับการจัดการข้อผิดพลาด

ฟังก์ชันสำหรับการจัดการข้อผิดพลาดมีดังนี้ -

  • ferror ( )
  • ข้อผิดพลาด ( )
  • เฟอออฟ ( )

ferror ( )

ใช้สำหรับตรวจจับข้อผิดพลาดขณะดำเนินการอ่านหรือเขียน

ไวยากรณ์มีดังนี้ −

int ferror (file pointer);

ตัวอย่างเช่น

FILE *fp;
if (ferror (fp))
printf ("error has occurred”);

คืนค่าศูนย์ หากสำเร็จและคืนค่าเป็นศูนย์ในกรณีอื่นๆ

ข้อผิดพลาด ( )

ใช้สำหรับพิมพ์ข้อผิดพลาด

โดยจะแสดงสตริงที่ส่งผ่าน ซึ่งตามด้วยโคลอน ช่องว่าง และการแสดงข้อความของค่าความผิดพลาดในปัจจุบัน

ไวยากรณ์มีดังนี้ −

perror (string variable);

ตัวอย่างเช่น

FILE *fp;
char str[30] = ”Error is”;
perror (str);

ผลผลิต

Error is: error 0

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับการใช้งาน ferror ( ) และ ข้อผิดพลาด ( ) ฟังก์ชัน −

#include<stdio.h>
main ( ){
   FILE *fp;
   char str[30] = "error is";
   int i = 20;
   clrscr ( );
   fp = fopen ("sample. txt", "r");
   if (fp = = NULL){
      printf ("file doesnot exist");
   } else {
      fprintf (fp, "%d", i);
      if (ferror (fp)){
         perror (str);
         printf ("error ");
   }
   fclose (fp);
   getch ( );
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

Error is: Error1 compiler generated.
Error.

เฟอออฟ ( )

ใช้สำหรับตรวจสอบว่าไฟล์ถึงจุดสิ้นสุดหรือไม่

ไวยากรณ์มีดังนี้ −

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;
   clrscr ( );
   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.