Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[2564] Re:Re:Re:Re:마지막 질문입니다. ^^;
임계종 [] 904 읽음    2003-05-05 22:05
이 프로그램에서 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[])   이 구문을 정확히 이해못하니.. ㅡ.ㅜ;
: : : :
: : : : 설명좀 부탁드립니다 !

+ -

관련 글 리스트
2534 파일 입출력에서 이해가 안갑니다. 임계종 1021 2003/05/02
2535     Re:파일 입출력에서 이해가 안갑니다. 실업자 1025 2003/05/02
2549         Re:Re:조금 더 구체적인 질문입니다. 임계종 970 2003/05/04
2550             Re:Re:Re:조금 더 구체적인 질문입니다. 실업자 948 2003/05/04
2564                 Re:Re:Re:Re:마지막 질문입니다. ^^; 임계종 904 2003/05/05
2571                     Re:Re:Re:Re:Re:마지막 질문입니다. ^^; 실업자 945 2003/05/06
2537         참고: env는 표준이 아닙니다. 김백일.cedar 969 2003/05/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.