C 언어

[C언어] 널 문자를 이용해 문자열 끝을 판단하는 함수들

피너츠36 2025. 4. 2. 20:05

C언어에서 문자열을 다루는 함수는 조심히 사용해야 한다. 

 

가령 strlen() 함수는 문자열의 길이를 구하는 함수인데, 널(\0) 을 만날 때까지 계속 읽어나간다. 만약 메모리 구조가 잘못되어 널문자를 못 만난다면 계속 읽어 나가거나 이상한 동작을 일으킬 수 있다. 

 

아래에는 문자열을 관련 함수 중 널 문자를 기준으로 동작하는 함수를 정리해보았다.

 

이 함수들을 사용할 경우에는 대상이 되는 문자열에 널이 보장되는지 꼭 확인하여 메모리  끝까지 읽다가 프로그램이 죽거나 오동작을 일으키는 상황을 방지해야 한다.

 

함수 동작방식
strlen(str) 널을 만날때 까지 문자 수를 센다. 특히 strlen 함수는 컴파일시가 아닌 런 타임에 동작하므로 유의가 필요하다.
strcpy(dest, src) src에서 널을 만날 때까지 복사를 진행하므로, src에 널이 없으면 오동작 가능.
strcat(dest, src) dest의 널 문자를 찾은 후 src를 붙이므로 dest의 널 문자가 보장 안되면 이상한 곳에 concat 가능. 
strcmp(s1,s2) 두 문자열을 널 문자 전까지 비교. 널이 보장 안되면 원하는 비교 불가할 수 있음.
strchr(str,ch) 내부적으로 널 문자까지 탐색하므로 널 문자가 보장되지 않으면 오동작 가능