DOS 또는 Console에서 프로그램을 실행시키려면 어떻게 합니까?
키보드로 해당 프로그램의 이름을 입력한 다음 엔터키를 치지 않습니까?
그리고, 해당 프로그램이 아규먼트를 요구한다면
프로그램이름 다음에 각종 아규먼트를 지정한 다음 엔터키를 치고요.
위의 내용이 이해가 됩니까?
그리고, VC 개발환경 내에서 프로그램을 실행 시킬 때 보통 Ctrl+F5를 입력합니다.
그럴때는 아규먼트를 어떻게 지정하느냐 이게 문제 아닙니까?
아래 메뉴에서 하면 됩니다.
Project->Settings...->Debug->Program Arguments:
임계종 님이 쓰신 글 :
: 이 프로그램에서 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[]) 이 구문을 정확히 이해못하니.. ㅡ.ㅜ;
: : : : :
: : : : : 설명좀 부탁드립니다 !
|