argv / argc 에 대해_1

2016. 4. 26. 16:17IT-개발/C및C++

반응형


Console Project로 동작하는 소스 만들었다.


아래 소스처럼 argv 로 무슨 Data가 날라 오는지 확인 보았다. 왜그랬냐고?


A.exe C:\Program Files\Canon C:\Program Files\DVDMaker


와 같이 parameter로 전달되는 string이 빈칸을 포함한체 전달되면 argument Count 가 늘어나고 


argv[0] : A.exe


argv[1] : C:\Program


argv[2] : Files\Canon


argv[3] : C:\Program


argv[4] : Files\DVD Maker


처럼 온다. 그런데, 이거 우리가 원하는 건가? 아니다. 그래서 다음 처럼 호출해주면 된다. "" 문자열로 감싸서 호출!


A.exe "C:\Program Files\Canon" "C:\Program Files\DVDMaker"


근데 이렇게 호출하게 되면 하나 의심이 드는게


argv[0] : A.exe


argv[1] : "C:\Program Files\Canon"


argv[2] :  "C:\Program Files\DVDMaker"


요렇게 호출하지 않을까 이다~~~ 근데~~ 걱정마시라~~ 


for (retvalue=0 ; retvalue < argc ; retvalue++)

WriteLog("_Test_", __FILE__, __LINE__, "arv[%d] : %s", retvalue, argv[retvalue]);



이렇게 소스로 log 찍어서 확인해보니~~~


argv[0] : A.exe


argv[1] : C:\Program Files\Canon


argv[2] :  C:\Program Files\DVDMaker


요렇게 나온다.... "" 문자는 argv 를 구분하기 위한 것이지 string에 직접적으로 포함되지 않는다.


그래서 아래와 같은 Code는 필요가 없다. 앞으로 걱정 마시길... 그리고 이런거 작성하지 마시길~ ^^


나두 확인차원에서 해봤어요. ㅎㅎ.. 뜨끔~


if(argv[2][len-1]=='"')

{

...

}


다들 넘 잘아는 거겠지만, 시간지나면 잊어버리더라~ ㅋ










'IT-개발 > C및C++' 카테고리의 다른 글

STL - iterator 사용하기 sample  (0) 2016.12.01
Design Patterns - sample - SingleTon  (0) 2016.12.01
전처리문... 한번씩 참고 (펌)  (0) 2016.03.07
함수포인터 - 콜백(callback) (펌)  (0) 2015.10.20
struct, class 키워드  (0) 2015.10.19