Soft Ware/C 언어!!

int main(int argc, char *argv[]) 에 대해서

달려가보자 2011. 12. 12. 14:21

공부가 잘 안되서 블로그 글을 쓰러 ^---^

요즘 글을 잘 안써서 블로그가 ㅠㅠ

자 그럼 주제에 써있는 내용으로 들어가 보겠습니다.

우리가 메인문을 많이 쓰시죠?

자 메인문도 일종에 함수 입니다. 그럼 매개변수가 입력될수 있겠죠?

메인문에 매개변수 두개가 입력되었는데요 하나는 int 형에 argc이고

다른 하나는 2차 char형 포인터인 argv이네요

그럼 메인은 어떻게 매개 변수값에 넣을 수  있을까요?

첫번째 방법은 콘솔창에서 디렉토리까지 간 다음에 명령어를 입력하는방법과

두번째 방법은 솔루션 탐색기에서 오른쪽 마우스를 클릭해서 속성 창으로 이동한다음

디버깅에서 명령인수 값에 넣어주면 됩니다 저는 -x -n patten 이라고 입력해 보았습니다.


자 그럼 분석을 시작해 볼까요

int 형에 argc는 명령어의 char 문자의 개수 입니다.

그럼 char 포인터 는 무엇을 가르킬까요?

2차 포인터라는것을 알수 있습니다 이 2차 포인터는 argv[0]에 값은 현재 프로젝트의 디렉토리를

가르키고 있으며 argv[1]의 포인터 값은 명령어를 제외한 -x -n patten 을 가르키고 있습니다.

그럼 우리는 argv[1] 값을 가지고 명령어 다음의 문자를 확인하여 무언가를 할수 있겠죠? ㅎㅎㅎ

이를 이용한 소스를 넣어두겠습니다 .

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>

 

int main(int argc, char *argv[])
{
 int c, except = 0, number = 0, found = 0;
  

  while(++argv, found == 0)
  while(c = *++argv[0])
   switch(c){
   case 'x':
       except = 1;
       break;
   case 'n':
       number = 1;
       break;
   default:
     printf("find: illegal option %c\n",c);
     argc = 0;
     found = -1;
     break;
   }
  return 0;
}