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

C/C++ Q/A
[2550] Re:Re:Re:조금 더 구체적인 질문입니다.
실업자 [origin] 948 읽음    2003-05-04 16:36
프로그램 실행 시 아규먼트라는 것은 프로그램 내부의 함수의 아규먼트와 같다고 보면 됩니다.
필요한 아규먼트의 갯수와 이름은 프로그래머가 필요에 따라 정합니다.

명령어라고 말한 것은 실행 가능한 파일이라 보면 이해가 쉽겠습니다.
(사실 내부 명령어라는, 파일이 아닌 것도 있긴 하지만...)

아래 코드를 실행 파일로 만들어 실행한다면 필요한 아규먼트는 출력용 파일의 이름입니다.
실행 파일이 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:마지막 질문입니다. ^^; 임계종 905 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.