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은 타입 안정성이 보장되므로 의도치 않은 암시적 변환 오류를 방지할 수 있습니다.