C Library - perror() function



The C library perror() function is designed to print a descriptive error message to the standard error stream (stderr), which helps in debugging and understanding what went wrong in your program.

Syntax

Following is the C library syntax of the perror() function −

 void perror(const char *str); 

Parameters

This function accepts only a single parameter −

  • str: A pointer to a null-terminated string that will be printed before the error message. If this string is not NULL and not empty, it will be followed by a colon and a space (: ). This string typically indicates the context or the function where the error occurred.

Return value

perror() does not return a value. It is a void function. Its primary purpose is to print an error message to stderr.

Example 1: Opening a Non-Existent File

This example tries to open a file that doesn't exist. fopen() sets errno to indicate the error, and perror() prints a descriptive message about the failure.

Below is the illustration of C library perror() function.

 #include <stdio.h> #include <errno.h> int main() { FILE *file = fopen("non_existent_file.txt", "r"); if (file == NULL) { perror("Error opening file"); } else { fclose(file); } return 0; } 

Output

The above code produces following result−

 Error opening file: No such file or directory 

Example 2: Creating a File in a Non-Writable Directory

This example tries to create a file in a directory where the user does not have write permissions. fopen() fails, sets errno to EACCES, and perror() prints an appropriate error message.

 #include <stdio.h> #include <errno.h> int main() { FILE *file = fopen("/non_writable_directory/new_file.txt", "w"); if (file == NULL) { perror("Error creating file"); } else { fclose(file); } return 0; } 

Output

After execution of above code, we get the following result

 Error creating file: Permission denied 
Advertisements