이 프로그램에서 argc 가 2인것 같은데 if(argc!=2) 가 실행되는것을 보면
(실행시키면 Usage :WRITE <filename> 이 나옵니다.)
argc 가 2가 아니란 소리인데.. 도무지 모르겠네요.
제가 어디서 잘못 생각하는 것인지..
마지막 질문입니다. ^^;
compiler 는 Visual C++ 6.0 입니다.
실업자 님이 쓰신 글 :
: 프로그램 실행 시 아규먼트라는 것은 프로그램 내부의 함수의 아규먼트와 같다고 보면 됩니다.
: 필요한 아규먼트의 갯수와 이름은 프로그래머가 필요에 따라 정합니다.
:
: 명령어라고 말한 것은 실행 가능한 파일이라 보면 이해가 쉽겠습니다.
: (사실 내부 명령어라는, 파일이 아닌 것도 있긴 하지만...)
:
: 아래 코드를 실행 파일로 만들어 실행한다면 필요한 아규먼트는 출력용 파일의 이름입니다.
: 실행 파일이 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[]) 이 구문을 정확히 이해못하니.. ㅡ.ㅜ;
: : : :
: : : : 설명좀 부탁드립니다 !
|