| ![[Previous]](../prev.gif) | ![[Contents]](../contents.gif) | ![[Index]](../keyword_index.gif) | ![[Next]](../next.gif) | 
Convert an error number into an error message (reentrant)
#include <string.h>
int strerror_r( int errnum,
                char *strerrbuf,
                size_t buflen );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The strerror_r() function maps the error number contained in errnum to an error message, which it stores in the buffer that strerrbuf points to.
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#define MSG_LEN 100
int main( void )
{
   FILE *fp;
   char msg_buff[MSG_LEN];
   int error_num;
   fp = fopen( "file.name", "r" );
   if( fp == NULL ) {
      error_num = strerror_r ( errno, msg_buff, MSG_LEN);
      switch (error_num) {
         case 0:
            printf( "Unable to open file: %s\n", msg_buff);
            break;
         case EINVAL:
            printf ( "strerror_r() failed: invalid error code, %d\n",
                     error_num);
            break;
         case ERANGE:
            printf ( "strerror_r() failed: buffer too small: %d\n",
                    MSG_LEN);
            break;
       }
   }
   return EXIT_SUCCESS;
}
| Safety: | |
|---|---|
| Cancellation point | No | 
| Interrupt handler | No | 
| Signal handler | Yes | 
| Thread | Yes | 
errno, perror(), stderr, strerror()
| ![[Previous]](../prev.gif) | ![[Contents]](../contents.gif) | ![[Index]](../keyword_index.gif) | ![[Next]](../next.gif) |