Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++에서 변수가 NULL인지 확인하는 방법

C/C++에서 변수가 NULL인지 확인하는 방법

C나 C++에서는 NULL 값을 비교하기 위한 별도의 전용 메서드가 제공되지 않습니다. 대신 if 문을 사용하여 변수가 NULL인지 여부를 간단하게 확인할 수 있습니다.

아래 예제에서는 시스템에 존재하지 않는 파일을 읽기 모드로 열어보겠습니다. 이 경우 fopen() 함수는 NULL을 반환하며, if 문으로 이를 검사하여 파일 열기 실패 여부를 판단할 수 있습니다.

예제 코드

#include <stdio.h>
main() {
    // 존재하지 않는 파일을 읽기 모드로 열기 시도
    FILE *fp;
    fp = fopen("hello.txt", "r");
    if(fp == NULL)
        printf("File does not exists");
    fclose(fp);
}

실행 결과

File does not exists

참고 사항

파일 열기에 실패했을 때는 실제로 fclose()를 호출하지 않는 것이 안전합니다. fopen()이 NULL을 반환한 상태에서 fclose(NULL)을 호출하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있기 때문입니다. 따라서 다음과 같이 작성하는 것이 더 좋은 습관입니다.

if(fp == NULL) {
    printf("File does not exists");
} else {
    // 파일 작업 수행
    fclose(fp);
}

또한 C++11 이상 환경에서는 포인터 초기화 시 NULL보다 nullptr를 사용하는 것이 권장됩니다. nullptr은 타입 안정성이 보장되므로 의도치 않은 암시적 변환 오류를 방지할 수 있습니다.