qhrrkfl2   6달 전

이게 뭔가요?

명령프롬프트? 그걸로 뭘 입력받는거 같긴 하는데

왜 어따쓰려고 저런게 있는거죠?

글구 api를 배우고 있는데 여기서도 WinMian의 ipszCmdParam 이것도 argv에 해당한다는데 쓰임세좀 알려주세요..

birdy1229   6달 전

argc, argv를 쓰기 나름인데 간단한 예시 두가지를 들어볼께요.

1. 파일 이름을 인자로 받아서 해당 파일을 읽어오고 싶을때.

-> ./test.exe input.txt

이렇게 프로그램을 실행시킨다면 argv[1] 에 "input.txt"가 들어가게 되고 내가 인자로 넘겨준 파일을 읽어올 수 있느 코드를 짜면 되겠죠.


2. 현재 프로그램이 개발모드인지 프로덕션모드인지 구분

개발을 하다보면 디버깅을 해야하는 부분이 있을 수 있습니다. 그런데 매번 디버깅용 코드를 넣었다 프로덕션용으로 디플로이 할 때

디버깅 코드를 지우면 귀찮겠죠. 그렇다면 프로그램을 실행할 때 인자로 현재 개발모드란 것을 알려주면 삶이 조금 더 편해질 수 있습니다.

-> ./myProgram.exe development

이런식으로 실행을 해준다면 프로그램 내에서 현재 개발모드인지 아닌지 쉽게 판별할 수 있겠죠.

아래는 간단하게 구별할 수 있는 코드를 첨부해 봤습니다.

pichulia   6달 전

굉장히 긴 이유를 설명할 순 있지만...간단하게 요약해보면


0. 일단 argc, argv는 알고리즘 문제를 풀고 채점하는 Online Judge 사이트에서는 사용하지 않습니다. C로 먹고살거 아니면 몰라도 되요.

1. scanf나 printf나 값을 콘솔창에서 입,출력하는 함수.

2. 근데 "구글 크롬"이나 "그림판"같이..실제 실행파일 중에서 콘솔창이 뙇! 뜨면서 뭐 뭐 뭐 입력하세요 하는거 본적 있나요?

3. Windows 등에서 사용되는 실행파일에서 사용하는 설정 값(구글 크롬을 예로 들면.. 시작 페이지 주소나 북마크 등)들은 대부분 File 을 통해서 입력받게 됩니다.

4. 근데 기본적으로 파일입출력은 굉장히 느리죠.

5. 굳이 파일로까지 입력받을 필요가 없는 설정 값들은 애초에 프로그램 딴에서 입력받게 하면 좋을듯... 이 때 쓰는게 argv, argv[] 입니다.


b6c6b6a33421b50fb19af2d8f2c003ee.png


윈도우키 + R을 누른 뒤, ipconfig 라는 실행파일을 수행하면

현제 자기 IP주소라던가.. 이런 것들을 콘솔창에 출력해줍니다.

이제 이 ipconfig 라는 실행파일을 사용하는 법이 궁금해졌을 때....

Windows 폴더 어딘가에 있는 ipconfig.exe 만을 위한 어떤 설정 파일을 찾아서 그 파일의 속성을 바꾸는 것이 아니라

ipconfig 뒤에 "/?" 라는 인자(argument)를 추가로 써줌으로써, 

아, 이 프로그램 사용자가 프로그램 사용법을 알고싶은 거구나? 라고 이해한 ipconfig.exe가 

그에 합당한 결과물을 출력하게 됩니다.


argc는 argument count의 약자고, argv는 argument values의 약자일...겁니다.

댓글을 작성하려면 로그인해야 합니다.