'argc'에 해당되는 글 1건

  1. 2012.11.23 Command-Line Argument. agrv[argc]
Linux/UNIX2012. 11. 23. 15:44

C언어를 조금 공부했거나 C언어 프로그래밍을 조금 해본 사람들은 다음과 같은 메인함수 형태를 본 적이 있을 것이다.


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

...

}

밑줄친 부분이 바로 오늘 살피고자 하는 부분이다.

간단하게 말하면 agrc는 메인 함수로 전달받은 인자의 개수이고, argv는 전달받는 인자 즉 문자열이라고 보면 된다.


리눅스 환경은 CLI(Command line interface)로서 쉘상에서 유저가 입력한 명령어를 한 줄씩 수행하는 환경이다. 우리는 리눅스 환경에서 gcc(혹은 cc)명령어로 .c 파일을 컴파일 하고, a.out혹은 사용자가 지정한 이름의 실행 파일 이름을 입력시켜서 프로그램을 시작한다.


설명의 용이함을 위해서 예를 들어보자


gcc -o hello hello.c


위와 같은 명령어를 입력하면 hello.c가 hello 라는 이름으로 컴파일되서 그 이름으로 프로그램을 실행 시킬수 있다. (우리가 알고 있는 .exe 와 같은 파일을 생성한 것이라고 보면 된다.) 앞에서 메인 함수로 인자를 전달한다고 했는데 프로그램을 실행 시키면서 같이 명령어를 써주는 것이 인자가 되는 것이다.


예 -> hello my name is J(실행파일 + 인자)

실행 파일 이후로 빈칸이 기준이되어서 각각의 인자로 인식한다. 즉 argv[argc] => argv[4]가 되고 arg[0]은 hello가 되는 것이다.



*예제

#include <stdio.h> // echoarg.c

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

int i;

for (i = 0; i < argc; i++) /* echo all command-line args */

printf("argv[%d]: %s\n", i, argv[i]);

exit(0);

}


각각의 argv에 명령어 한 줄에 입력한 인자를 순서대로 보여주는것을 확일할 수 있다.




Posted by twinjh