스트링의 직접 비교와 strcmp와의 차이가 무엇일까요?
글쓴이: hoterm / 작성시간: 화, 2007/06/12 - 5:03오후
임의의 디렉터리를 읽어서 하부 파일들을
다른 디렉터리에 복사하는 프로그램을 짜다가
고생을 좀 했던 내용입니다.
case A
{
if(dirp->d_name == "." || dirp->d_name == "..")
continue;
else
//처리
}
case B
{
if((strcmp(dirp->d_name, ".") == 0) || (strcmp(dirp->d_name, "..") == 0))
continue;
else
//처리
}
case A 의 경우에는 조건이 참인데도 불구하고 continue를 수행하지 않습니다.
case B의 경우에는 조건이 참이면 continue를 수행합니다.
왜 그런지 아시는분 계세요?
Forums:
잘못된 답변인듯하여 자삭합니다.
헛..
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
꽤나 솔직해 질 수 있다...
우연을 바라지 않는다면....
case A는 실수로 잘못
case A는 실수로 잘못 작성한 코드일 듯 합니다.
case A의 if문에서는 pointer를 비교하고 있기 때문에 두 개의 pointer를 비교해서 우연히 pointer가 같지 않는 이상 실행되지 않을 듯 합니다.
Taeho Oh ( ohhara@postech.edu , ohhara@plus.or.kr ) http://ohhara.sarang.net
Postech ( Pohang University of Science and Technology ) http://www.postech.edu
Digital Media Professionals Inc. http://www.dmprof.com
Taeho Oh ( ohhara@postech.edu ) http://ohhara.sarang.net
Postech ( Pohang University of Science and Technology ) http://www.postech.edu
Alticast Corp. http://www.alticast.com
case A 는 스트링을
case A 는 스트링을 비교하는 코드가 아닙니다.
윗분 설명대로 ".." 와 "." 스트링이 저장되어 있는 주소와
dirp->d_name 이라는 주소를 비교하는 코드입니다.
case B 는 각각의 주소에 저장되어 있는 스트링을 비교하는 코드가 맞구요.
댓글 달기