내 C 프로그램 중 하나의 if 문에서 argv에 문제가 있습니다. 나는 내가 무언가 간단하고 어리석은 것을 잃어 버렸음에 틀림 없다는 것을 안다. 문제는 명령 행에 아무것도 지정하지 않으면 doOtherStuff()가 수행되지 않습니다. ./a.out -i로해도 doStuff()가 실행됩니다. 아무도 여기서 무엇을 놓칠지 알 수 있습니까? 미리 감사드립니다. 당신이 C에서 문자열을 비교하려면이상한 문제 if 문에 argv 사용
int main(int argc, char *argv[])
if(argv[1] == "-a" || "-A")
{
doStuff();
}
else
{
doOtherStuff();
}
}
'operator || '의 사용법도 잘못되었습니다. – chris
오, 이런. 나는 그것에 대해 완전히 잊었다. 감사! – wafflesausage
호기심이 생길 경우'doStuff()'가 항상 호출되는 이유는'||'의 잘못된 사용 때문이었습니다 :'argv [1] == "-a"절은 항상 실패했기 때문에 실패합니다 문자열을 비교하는 유효한 방법이 아니며 각 문자열에 대한 포인터는 결코 같지 않습니다. 그러나 독방''-A ''는 항상 0이 아닌 주소를 가지기 때문에 항상 true가됩니다. 이는 if 문이 항상 true로 평가된다는 것을 의미합니다. –