프로그래밍 질문입니다...도와주세요..
글쓴이: 제리 / 작성시간: 금, 2003/01/10 - 12:10오전
다음과 같은 프로그램이 있습니다. 파일 입출력 공부하고 있습니다.
argc의 용도가 무엇인지를 알고 싶습니다.
#include <iostream.h> #include <fstream.h> /******************************************************** * count_one -- count # lines in a single file * * * * Returns the number of lines * ********************************************************/ int count_one( istream &in_file // File to read ) { int count = 0; // Line counter while (!in_file.eof()) { char ch; // Character we are looking at in_file.get(ch); if (in_file.eof()) break; if (ch == '\n') ++count; } return (count); } main(int argc, char *argv[]) { if (argc == 1) { cout << count_one(cin) << "\t--cin--\n"; } else { while (argc > 1) { ifstream in_file(argv[1]); // Input file if (in_file.bad()) { cerr << "Error: Could not open " << argv[1] << " for reading\n"; } else { cout << count_one(in_file) << '\t' << argv[1] << '\n'; } argc--; argv++; } } return (0); }
도움 부탁드립니다...^^
Forums:
실행파일이 넘겨받은 인자가 아닌가요...?
그러니까... 컴파일된 실행파일이 a.out 이라면...
# a.out a b c d e
라고 할 때...
argc 는 인자가 5개니까 5, argv 는 'a', 'b', 'c', 'd', 'e' 가 담긴 배열일 것 같은데요...?
하도 오래전에 써먹었던 녀석이라 기억이 가물가물... --;
참고로... C/C++ 관련 서적들을 찾아보시는 것이 더 정확하고 쉬울 것 같네요. ^^;
argc는 인자의 개수고 argv가 인자의 배열은 맞는데 여기서 인자에는
argc는 인자의 개수고 argv가 인자의 배열은 맞는데 여기서 인자에는 실행 파일도
포함 됩니다. 따라서 #a.out a b c d e 라고 했을때 argc는 6이 되고
argv[0] = "a.out"
argv[1] = "a"
argv[2] = "b"
argv[3] = "c"
argv[4] = "d"
argv[5] = "e"
이렇게 넘어 오게 됩니다.
이것을 이용해서 파일을 실행할때 입력 받은 인자들을 분석할 수 있는것입니다.
Dream, Passion and Challenge..
제가 쓴 내용은 참고로 보세요 - getopt(3) 함수argc,
제가 쓴 내용은 참고로 보세요
- getopt(3) 함수
argc, argv 를 쓰는 이유가 실행파일이 옵션에 따른 것을 만들 때 하는건데
getopt(3) 은 그런 작업을 처리하는데 편리합니다.
- shell program vs. c program
c program 에서 argv[0] 은 실행 파일의 이름입니다.
shell program 에서 $1 (== argv[0]) 는 실행파일 이름 다음에 써 주는 것입니다.
댓글 달기