strerror 함수

char * strerror ( int errno ); 에러 번호를 설명하는 에러 문자열을 반환하는 함수

입력 매개 변수 리스트

errno 에러 번호

반환 값

에러 번호에 대응하는 에러 메시지

가장 최근에 발생한 에러 번호는 errno 변수에 있습니다. errno 변수는 <errno.h> 헤더 파일을 포함하면 접근할 수 있습니다.

사용 예

//C언어 표준 라이브러리 함수 가이드
//char * strerror ( int errno ); 에러 번호를 설명하는 에러 문자열을 반환하는 함수
//에러 메시지 목록 출력 및 없는 파일을 읽기 모드로 열었을 때 에러 번호와 에러 메시지 출력
#include <stdio.h>
#include <errno.h>
#include <string.h>

void ListErrorMsg()
{
    int i = 0;
    char *errmsg;

    printf("== Error Message List ==\n");
    for(i=0;i<45;i++)
    {
        errmsg = strerror(i);//에러 메시지 확인
        printf("<%d>:%s\n",i,errmsg);//에러 번호와 에러 메시지 출력
    }
}

int main(void)
{
    FILE * fp;
    
    ListErrorMsg();//에러 번호와 에러 메시지 목록 출력

    printf("\n없는 파일 읽기 모드로 열었을 때의 에러 메시지 확인하기\n");
    fp = fopen ("noexist.txt","rt");//읽기 모드로 없는 파일 열기
    if (fp == NULL)//파일 스트림이 NULL일 때
    {
        perror("file not existed");//에러 메시지 출력
        printf ("%d: %s\n",errno,strerror(errno));//에러 번호와 에러 메시지 출력
        return 0;
    }
    fclose(fp);
    return 0;
}

출력

== Error Message List ==
<0>:No error
<1>:Operation not permitted
<2>:No such file or directory
<3>:No such process
<4>:Interrupted function call
<5>:Input/output error
<6>:No such device or address
<7>:Arg list too long
<8>:Exec format error
<9>:Bad file descriptor
<10>:No child processes
<11>:Resource temporarily unavailable
<12>:Not enough space
<13>:Permission denied
<14>:Bad address
<15>:Unknown error
<16>:Resource device
<17>:File exists
<18>:Improper link
<19>:No such device
<20>:Not a directory
<21>:Is a directory
<22>:Invalid argument
<23>:Too many open files in system
<24>:Too many open files
<25>:Inappropriate I/O control operation
<26>:Unknown error
<27>:File too large
<28>:No space left on device
<29>:Invalid seek
<30>:Read-only file system
<31>:Too many links
<32>:Broken pipe
<33>:Domain error
<34>:Result too large
<35>:Unknown error
<36>:Resource deadlock avoided
<37>:Unknown error
<38>:Filename too long
<39>:No locks available
<40>:Function not implemented
<41>:Directory not empty
<42>:Illegal byte sequence
<43>:Unknown error
<44>:Unknown error

없는 파일 읽기 모드로 열었을 때의 에러 메시지 확인하기
file not existed: No such file or directory
2: No such file or directory