티스토리 뷰

c언어

main함수 argc,argv인자에 대하여

삼전동해커 2020. 8. 30. 13:00

대부분 main함수를 작성할 때 인자없이

main()으로 작성한다.


하지만 원래main에도 인자가 존재한다.


int main(int argc,char *argv[]){}


이렇게 argcargv가 있다.


먼저 argc는 인자의 개수를 받아주는 인자이다.

즉, 몇개의 인자를 받았는지를 나타낸다.

데이터 타입은 int형이다. 


argv[]는 인자의 값을 받아준다.

데이터 타입이 포인터인 이유는 데이터값이 담긴 주소값을 가르키기 때문이다.


간단한 예제를 살펴보면




이렇게 hello world를 출력한 후, argc의 값과 반복문으로 argv의 값들을 출력하는 코드가 있다.


결과를 보면 argc의 값은 1이고, argv[0]의 값은 ./c로 나왔다. 


./c는 뭘까?

바로 우리가 실행하는 파일의 이름이다. 먼저 파일을 실행해야 하니 argv[0]에는 파일의 이름이 들어가겠다. 

그럼 argv[1]이나 argv[2]도 있지 않을까?



위 코드는 gets함수를 사용해 입력값을 name1에 저장하고,

argv[1]의 값을 name2에 복사하는 strcpy함수가 있다.

그리고 마지막에 argv의 값들을 출력한다.


실행해 보면



이런 결과가 나온다.


입력값인 aaaa는 name1에 저장되고 미리 인자를 전달한 name2는argv[1]의 값으로 출력된다.

즉 name2가 적혀있는 자리가 argv[1]의 자리이다.


그럼 argv[2]와 argv[3]의 자리도 어디인지 알겠다.


argv들의 값들의 구분자는 argv 사이의 공백이다.


'c언어' 카테고리의 다른 글

정적 변수 사용하기  (0) 2020.11.10
배열 리턴하기  (0) 2020.11.10
DES 구현 2일차  (0) 2020.11.10
DES 구현 1일차  (0) 2020.11.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함