그래서 명령 줄 매개 변수가 항상 null로 종료되는지 궁금합니다. Google은 그렇다고 말하며, GCC에서 컴파일하는 것은 이것이 사실임을 나타냅니다. 그러나 이것이 항상 사실임을 보장 할 수 있습니까?기본 null의 char * argv [] 인수가 종료 되었습니까?
int main(int argc, char** argv)
{
char *p;
for(int cnt=1; cnt < argc; ++cnt)
{
p = argv[cnt];
printf("%d = [%s]\n", cnt, p);
}
return 0;
}
$ MyProgram -arg1 -arg2 -arg3
1 = -arg1
2 = -arg2
3 = -arg3
예, 그렇습니다. – kol
잠시 생각해보십시오. * NULL이 끝나지 않은 경우 어떻게 될까요? * –
잠깐 생각 해봐 ... char []와 char *는 자동으로 C 스타일 문자열을 암시하지 않습니다. 분명히 전체 명령 줄 문자열은 NULL로 끝나지 만 NULL이 끝나는 명령 줄에서 전달 된 각 개별 문자 배열로 변환 할 필요는 없습니다. argv가 명령 행에서 공백을 제거하고 C 스타일 문자열이 아닌 널 문자가 아닌 문자 배열을 갖는 것만으로도 충분합니다. – LeviX