Defined in header <stdio.h>
void perror( const char *s );

Prints a textual description of the error code currently stored in the system variable errno to stderr.

The description is formed by concatenating the following components:

  • the contents of the null-terminated byte string pointed to by s, followed by ": " (unless s is a null pointer or the character pointed to by s is the null character)
  • implementation-defined error message string describing the error code stored in errno, followed by '\n'. The error message string is identical to the result of strerror(errno).


s - pointer to a null-terminated string with explanatory message

Return value



#include <stdio.h>
int main(void)
    FILE *f = fopen("non_existent", "r");
    if (f == NULL) {
        perror("fopen() failed");
    } else {

Possible output:

fopen() failed: No such file or directory


  • C11 standard (ISO/IEC 9899:2011):
    • The perror function (p: 339)
  • C99 standard (ISO/IEC 9899:1999):
    • The perror function (p: 305)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • The perror function

See also

returns a text version of a given error code
C++ documentation for perror

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.