본문 바로가기

카테고리 없음

strlen()

strlen 함수는 참 유용하죠

근데 이거때문에 20여분은 삽질 했습니다.

if(local_path[strlen(local_path)-1] != '/')
{
local_path[strlen(local_path)] = '/';
            local_path[strlen(local_path)+1] = 0;
}

local_path의 마지막 문자열이 '/' 가 아닌 경우 그 다음 자리에  '/'를 주고 그 다음칸에 null문자를 추가 시켜주기 위해 위와 같은 소스를 작성했다가 낭패를 봤습니다.

어디서 듣도못한 듣보잡 쓰레기 값들이 함께 출력되더군요...

원인은.. strlen값의 유동성에 있었습니다.  물론 이건 완벽히 저의 잘못이긴 하죠

if(local_path[strlen(local_path)-1] != '/')
{
int tmp = strlen(local_path);
            local_path[tmp] = '/';
            local_path[tmp+1] = 0;
}

이렇게 해야 합니다.. 끄응...

strlen 함수는 char형 배열의 값을 1char씩 검사하면서 0이 나오는 곳 까지 카운트하여 uint를 리턴해주는 데요..

마지막 값에 '/'를 추가한 순간 strlen 값이 완전히 달라져 버리는 것입니다. 근데 그것을 간과하고 또 strlen 함수를 썼으니 이럴수밖에요...

흠냥 

유용한 함수의 성질을 더 잘 알면 더 올바르게 사용할 수 있을것 같습니다.

아직도 전 허접하네요 ㅠ