프로그램 실행 시 아규먼트라는 것은 프로그램 내부의 함수의 아규먼트와 같다고 보면 됩니다.
필요한 아규먼트의 갯수와 이름은 프로그래머가 필요에 따라 정합니다.
명령어라고 말한 것은 실행 가능한 파일이라 보면 이해가 쉽겠습니다.
(사실 내부 명령어라는, 파일이 아닌 것도 있긴 하지만...)
아래 코드를 실행 파일로 만들어 실행한다면 필요한 아규먼트는 출력용 파일의 이름입니다.
실행 파일이 C:\GetStr.exe이고 C:\가 path 환경변수에 잡혀 있는 경우, 출력용 파일을 data.txt로 하려면 아래와 같이 실행합니다.
GetStr data.txt(Enter 키)
그러면 main 함수에서는 아래와 같이 됩니다.
argc: 2
argv[0]: C:\GetStr.exe
argv[1]: data.txt
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
main(int argc,char *argv[])
{ if(argc!=2)
{ cout <<"Usage:WRITE <filename>\n";
return 1;
}
//첫번째 아규먼트의 문자열을 이름으로 하는 파일을 쓰기 모드로 열기.
ofstream out(argv[1]);
if(!out)
{ cout <<"Cannot oppen output file \n";
return 1;
}
char str[80];
cout <<"Write strings to disk , RETURN to stop \n";
do
{ cout <<":";
//stdin(보통 키보드)으로부터 문자열을 입력받아 str 번지에서 시작하는 메모리에 저장
//gets 함수는 엔터 키를 누르면 return함
gets(str);
//str 문자열을 파일에 출력
out <<str <<endl;
}while(*str); //입력 내용이 있는 동안 계속
out.close(); //파일 닫기
return 0;
}
임계종 님이 쓰신 글 :
: 먼저 답변 감사하구여. 많은 도움이 되고 있습니다.
:
: 근데 제가 개념이 안잡혀서요..
:
: argc가 명령어(실행파일명)와 아규먼트들의 갯수라고 하는데
:
: 그게 무슨 뜻이져 @_@?? (ㅡ.ㅜ 책이 부실해서리)
:
: 또 /s /d /o 라는 것도 잘 이해가 .. ㅡ.ㅜ
:
: 제가 올린 프로그램이 어떻게 전개되는지 설명 좀 부탁드립니다.
:
: 너무 무리한 요구인건 알지만 답답한 심정이 염치불구하구 ==;;
:
: 다시 한번 부탁드립니다.
:
: 실업자 님이 쓰신 글 :
: : int main(int argc, char *argv[], char *env[]);
: :
: : 예: SomeExecutable /s /d /o
: : (SomeExecutable.exe가 C:\Windows에 있다고 가정)
: :
: : argc:
: : 명령어(실행파일명)와 아규먼트들의 갯수: 4
: :
: : argv:
: : 명령어(실행파일명)와 아규먼트들
: : argv[0] : 경로를 포함한 실행파일명 ; C:\Windows\SomeExecutable.exe
: : argv[1] : 첫번째 아규먼트 ; /s
: : argv[2] : 두번째 아규먼트 ; /d
: :
: : argv[argc-1] : 마지막 아규먼트 ; /o
: :
: : env:
: : 환경변수들
: : PATH=C:\;C:\Windowd; 등과 같은 환경변수들
: : env[idx]가 NULL이면 더이상 환경변수가 없는 것임(idx=0~).
: :
: :
: : 임계종 님이 쓰신 글 :
: : : #include <iostream.h>
: : : #include <fstream.h>
: : : #include <stdio.h>
: : :
: : : main(int argc,char *argv[])
: : : { if(argc!=2)
: : : { cout <<"Usage:WRITE <filename>\n";
: : : return 1;
: : : }
: : : ofstream out(argv[1]);
: : : if(!out)
: : : { cout <<"Cannot oppen output file \n";
: : : return 1;
: : : }
: : :
: : : char str[80];
: : : cout <<"Write strings to disk , RETURN to stop \n";
: : :
: : : do
: : : { cout <<":";
: : : gets(str);
: : : out <<str <<endl;
: : : }while(*str);
: : :
: : : out.close();
: : : return 0;
: : : }
: : :
: : : 실행시키면 Usage : WRITE <filename> 이 뜨는데
: : :
: : : 도무지가 이해가 가지 않네요. 왜 이것이 뜨는지..
: : :
: : : main(int argc, char *argv[]) 이 구문을 정확히 이해못하니.. ㅡ.ㅜ;
: : :
: : : 설명좀 부탁드립니다 !
|