C언어 배열과 포인터 main함수로 인자전달

    2018-02-08 03:29:28 작성

    지금까지 main함수는 매개변수를 받지 않는 void를 선언하여 함수를 정의 하였습니다.
    main 함수도 매개변수를 입력받을 수 있습니다.
    다음과 같은 형태의 함수 호출 선언이 필요합니다.

    #include <stdio.h>
    
    int main(int argc, char * argv[]) {
    	int i;
    
    	printf("전달받은 문자열의 수 : %d\n", argc);
    	for (i = 0; i < argc; i++) {
    		printf("%d번째 문자 : %s\n", i + 1, argv[i]);
    	}
    	return 0;
    }

    Visual studio에서 실행파일이 생성되는 위치는 다음과 같이 확인할 수 있습니다.
    먼저 메뉴에서 빌드 > 솔루션빌드를 수행하면 출력창에 다음과 같이 빌드 정보가 있으며 빌드정보를 보면 실행파일 위치가 있습니다.
    실행파일의 위치는 사용자 환경에 따라 다릅니다.

    위의 정보를 보고 파일 탐색기를 찾아가면 되겠고요.
    조금더 쉬운방법을 보자면

    1. 솔루션 탐색기 창에서 다음과 같이 솔루션에서 우클릭
    2. 팝업창에 보면 파일탐색기에서 폴더열기 메뉴를 클릭
    3. 파일탐색기에서 Debug 폴더 오픈


    그렇게 해서 파일 탐색기로 가면 실행파일의 위치를 찾을 수 있습니다.

    윈도우에서 명령프롬프트(cmd)를 실행하여 이 위치로 찾아갑니다.
    다음과 같이 실행하여 main 함수에 인자를 전달할 수 있습니다.

    main함수의 argc는 전달된 문자열의 개수입니다.
    argv는 문자열을 담을 수 있는 포인터배열 입니다.
    argv의 첫번째 값은 실행된 파일명이 되며, 2번째 값부터는 공백을 구분으로 전달 된것을 알 수 있습니다.
    문자열 전달시 공백을 포한한 문자열을 전달하려면 다음과 같이 "로 묶어 전달하면 됩니다.