C 프로그램을 할 때
//main.cvoid main(){ printf("Hello!! World\n");}의 형태로 main()을 시작할 수도 있지만
//main.cint main(int argc, char *argv[]){ printf("Hello!! World\n"); return 1;}과 같이 인자를 넘길 수는 있는 형태로도 할 수도 있다.
이와 같은 구조는 C언어를 처럼 배울때 대부분 배우게 되지만,
프로로그램 시작시에 인자를 넘길 일이 별로 없다보면 시간이 지나면서
사용방법을 잊게 된다.
그리서 이번에는 C코드를 int main(int argc, char *argv[]) 로 시작해서 인자를 넘기고 코드안에서
처리하는 방법에 대해서 정리하고자 한다.
아래는 컴파일 수 프로그램 시작이 문자열들을 넘기는 테스트를 위한 코드이다. 전체 argument의 개수를 표시하고, argument로 넘어온 문자열을 표시한 후에 string compare를 통하여 일치하는 값을 출력하는 예제이다.
(주의: strcmp는 두값이 일치하면 0이 리턴된다)
//main.c#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){ int i=0; printf("The Number of arguments(argc) = %d\n", argc); for(i=0; i<argc; i++) { printf("%s \n", argv[i]); } if(strcmp( argv[1], "test" ) == 0) { printf("==> First arguemnt is 'test' \n"); } return 0;}
결과 화면은 아래와 같다.
[프로그램 실행 (3개의 문자열 'test abc 123'를 넘김)]
D:\C_code>main_arg.exe test abc 123
[프로그램 실행 결과]
The Number of arguments(argc) = 4
d:/c_code/main_arg.exe
test
abc
123
==> First arguemnt is <test>
결과를 보면 알겠지만 주의할 것은 프로그램을 실행하기 위한 파일명도 argv[0]의 문자열 값으로 넘어가게 된다는 것이다. D:\C_code>main_arg.exe test abc 123
[프로그램 실행 결과]
The Number of arguments(argc) = 4
d:/c_code/main_arg.exe
test
abc
123
==> First arguemnt is <test>
따라서 3개의 argument를 넘겼는데도, argument 개수를 나타내는 argc의 개수는 4개가 되었다.
여기서 사용자가 생각하는 첫번째 argument의 문자열은 argv[1]가 된다는 것을 기억하면 된다.
argument와 strcmp 기능을 잘 이용하면 하나의 프로그램으로 여러가지 기능을 수행할 수 있도록 코딩한 후에 실행할 때 argument를 다르게 넘겨서 각각 다른 프로그램을 실행하는 것처럼 할 수 있다.
특히 이 기능은 임베디드 시스템에서 테스트 코딩 시에 유용하게 이용할 수 있다.
'프로그래밍 > C/C++/C#' 카테고리의 다른 글
Makefile에서 -D로 정의하기 (0) | 2014.05.03 |
---|---|
C 언어에서 extern과 staic 변수의 이해 (1) | 2013.06.16 |
DLL과 LIB 차이점 설명 (0) | 2012.11.10 |
VC++을 이용한 Serial 통신 프로그램 만들기 [고급] (0) | 2009.12.25 |
VC++을 이용한 Serial 통신 프로그램 만들기 [기초] (0) | 2009.12.25 |