[C++] argc와 argv

솔직히 int main()만 쓰다가 코테 준비하면서 채점페이지에 main 함수가 int main(int argc, char * argv[])가 있는 걸 처음 봤다. 처음엔 궁금했는데 나중에 찾아봐야지 찾아봐야지 하다가 지금까지 왔다. 그리고 오늘 그 죗값을 치뤘다. 이젠.. 잘 알아두자. 모르는 거 있으면 바로바로 찾아보고..

int argc

int argcarguments countmain함수에 전달된 인자의 갯수를 의미한다.

char * argv[]

char * argv[]arguments vector로서 가변적인 갯수의 문자열을 의미한다.
argv[0]실행경로이다. argv[1], argv[2], argv[3]... 은 사용자가 입력한 값이 들어간다.

그래서 이걸 왜 쓰는데?

terminal이나 cmd에서 프로그램 이름으로 명령을 실행시킬 때 사용할 수 있다. 예전엔 다 이렇게 값을 넣어줬다고 한다.. 쓰는 방법은 다음과 같다.

  1. main 함수를 적절하게 짜고 빌드한다.
// Project Name : DIC
int main(int argv, char* argc[])
{
	std::string temp1(argc[0]);

	std::string temp2;
	if(argv > 1)
		temp2 = std::string(argc[1]);
	std::cout << temp1 << " " << temp2 << std::endl;

	return 0;
}
  1. 빌드하고 나면 Debug폴더가 생성된다. 터미널에서 현재 프로젝트의 Debug폴더로 이동한다.

  2. 폴더 내에 있는 파일 목록들을 보면 현재 프로젝트와 이름이 동일한 파일이 있을 것이다.

  3. 그 파일을 실행한다.

    🏷 주의! 다음과 같은 에러가 날 수도 있다.

error while loading shared libraries: libavformat.so.58: cannot open shared object file: No such file or directory

그럴 땐 LD_LIBRARY_PATHexport를 해준다. 나같은 경우는 다음과 같다.

그리고 다시 실행해준다.

  1. 실행결과

코드 보면 argc[0]argc[1]만 출력되게 해놓아서 이렇게 출력되었다.

좋은 웹페이지 즐겨찾기