검색결과 리스트
글
<main()함수의 인자>
지금까지 공부했던 것에는 main함수에 인자는 없고 계속 void형이었다.
만약, main함수에는 인자가 있다면 어떻게 될까?
맨 처음 main함수의 인자는 프로그램을 실행할때 문자열을 띄어 쓰기 단위로 배열에 저장된다고 배웠을 것이다. 앞에 int형이니 어떤 값(0 혹은 1)을 운영체제에게 반환해야된다고 배웠다.
처음엔 이게 언제 어떻게 왜 사용되는 지도 모르고 배웠을 것이며, 지금부터 그것을알아보자!
main()함수의 인자는 shutdown -t 과 같이 옵션을 지정할때 쓰인다.
명령 행 컴파일러도 옵션을 줘서 내가 원하는 대로 프로그램을 실행 가능하게 할수 있다.
말그대로 옵션을 지정하는데 쓰인다.
무슨말인가? main()함수말고 리눅스 혹은 명령 프롬프트에 명령어를 입력했다고 가정해보자.
예를 들어 shutdown -t now 이런 명령어를 입력했다고 가정하였을 때, shutdown 이라는것은 명령어이며 -t와 now는 옵션들이다. 사람들이 임의로 넣어준 옵션이다.
자 이제 main함수로 돌아가 어떻게 작동하는지 알아보자.
int main(int argc, char* argv[]) 이렇게 되어 있다고 하자.
첫번째, int argc는 사용자가 명령 프롬프트에서 입력한인자의 개수를 카운트하고,
두번째 char* argv[]는 명령 프롬프트 창에서 받은 인자를 공백을 기준으로 배열로 반환한다.
<실습>
-결과-
위 결과를 보면 test.exe를 실행하기 전에 인자로 -h와 -a를 넣었다. 그렇게 되면
int main(int argc, char* argv[])에 있는 인자 argc에는 입력한 인자의 개수가 들어가고, char* argv[]에는 배열을 생성해 argv[0]에는 test.exe가 있는경로, argv[1]에는 첫번째 입력한 인자 -h, argc[2]에는 두번째 입력한 인자 -a 이런식으로 저장이 되어 출력된다.
이것을 이용해 각 명령어들의 옵션을 지정해주면 어떨까?
간단한 실습을 통해 알아보자
<실습>
-결과-
해설을 해보면, argv[]라는 배멸에 test.exe뒤에 사용자가 임의로 입력한 옵션들은 다 저장이 된다. 그 중에, 맞는 것만 strcmp를 사용해서 출력하는 코딩이다.
다른 명령어들은 이런식으로 어떤 특정 명령어에 대해서만 반응하고 다른 명령어들은 반응하지 않는 식일 것이다.
'Programming > C' 카테고리의 다른 글
C언어 - 구조체(struct) (0) | 2016.05.26 |
---|---|
C언어 - void형 포인터 (0) | 2016.05.25 |
C언어 - 주소를 반환하는 함수 (0) | 2016.05.23 |
C언어 - Call By Value(값에 의한 호출), Call by Reference(주소에 의한 호출) (0) | 2016.05.22 |
C언어 - 포인터 변수의 상수화 (0) | 2016.05.21 |
RECENT COMMENT