main 함수는 다음과 같이 정의할 수도 있다.
int main(int argc, char * argv[]) { ... }
프로그램 실행시 main함수로 인자를 전달할 수 있고, main 함수도 인자를 전달받을 수 있도록 한 것이다.
#include <stdio.h>
int main(int argc, char * argv[])
{
int i = 0;
printf("전달된 문자열의 수 : %d\n", argc);
for(i = 0; i < argc; i++)
printf("%d 번째 문자열 : %s\n", i+1, argv[i]);
return 0;
}
/*
input :
# ./argcargv I love you
output:
전달된 문자열의 수 : 4
1 번째 문자열 : ./argcargv
2 번째 문자열 : I
3 번째 문자열 : love
4 번째 문자열 : you
*/
위 코드와 같이 main함수를 구성하면 프로그램을 실행할 때 인자를 전달 할 수 있다. argv는 char형 더블 포인터 변수이다.
인자 전달 과정에서 공백은 문자열을 나누는 기준이 된다. 인자로 전달된 문자열들이 배열에 묶여 main 함수의 두 번째 인자로 전달이되고, 첫 번째 인자는 문자열의 수가 전달이 된다.
#include <stdio.h>
int main(int argc, char * argv[])
{
int i = 0;
printf("전달된 문자열의 수 : %d\n", argc);
while(argv[i] != NULL)
{
printf("%d 번째 문자열 : %s\n", i+1, argv[i]);
i++;
}
return 0;
}
/*
input :
# ./argvNull "I Love You"
output :
전달된 문자열의 수 : 2
1 번째 문자열 : ./argvNull
2 번째 문자열 : I Love You
*/
위 코드를 통해 전달받은 배열의 마지막에 NULL이 삽입됨을 확인할 수 있다. 또한 큰 따옴표로 묶으면 공백을 포함하는 문자열을 인자로 전달할 수 있다.
'Language > C, C++' 카테고리의 다른 글
[C] 문자 단위 입출력 함수 (0) | 2021.01.15 |
---|---|
[C] 스트림 (0) | 2021.01.15 |
[C] void 포인터 (0) | 2021.01.08 |
[C] 함수 포인터 (0) | 2021.01.08 |
[C] 2차원 배열의 포인터 (0) | 2020.12.30 |