== 소스 == === myCmdBase === {{{ // myCmdBase.cpp : 콘솔 ì‘ìš© í”„ë¡œê·¸ëž¨ì— ëŒ€í•œ ì§„ìž…ì ì„ ì •ì˜í•©ë‹ˆë‹¤. // #include "stdafx.h" #include <iostream> using namespace std; #include <string.h> #include "cmdTest.h" #include "rei.h" typedef char (*ARGV)[ARG_SIZE]; typedef int (*PF)(int, ARGV); struct Cmds{ char cmdName[256]; PF cmd; } cmds[] = {{"rei", rei}}; int parseCommand(char* str, ARGV argv); PF getCommander(ARGV argv); int _tmain(int argc, _TCHAR* argv[]) { char input[256]; char inputArgv[ARG_NUM][ARG_SIZE] = {0,}; cout<<"input your command : "; cin>>input; // ì‚¬ìš©ìž ìž…ë ¥ì„ ë„어쓰기 단위로 ë‚˜ëˆ„ê³ ëª‡ê°œë¡œ int inputArgc = parseCommand(input, inputArgv); // 커맨드를 비êµí•˜ì—¬ ì ì ˆí•œ 커맨드 함수를 받는다. PF pf = getCommander(inputArgv); // 커맨드 함수 호출 pf(inputArgc, inputArgv); return 0; } // 문ìžì—´ì„ ë„어쓰기 단위로 나눈다. int parseCommand(char* str, ARGV argv){ if( strlen(str) <= 0 ) return 0; // no command char* ptr = strtok( str, " "); strcpy( argv[0], ptr); int i; for( i=1; ptr = strtok( NULL, " "); i++) strcpy(argv[i], ptr); return i; } // 가장 앞 문ìžì—´ì„ ì´ìš©í•˜ì—¬ ì¼ì¹˜í•˜ëŠ” 커맨드를 ê°€ì ¸ì˜¨ë‹¤. PF getCommander(ARGV argv){ for( int i=0; i<sizeof(cmds)/sizeof(Cmds); i++) if( strcmp(argv[0], cmds[i].cmdName ) == 0 ) return cmds[i].cmd; return testCmd; } }}} === rei.cpp === {{{ #include "rei.h" #include <fstream> int rei(int argc, char (*argv)[ARG_SIZE]){ ifstream f("rei.txt"); if(!f) { cout << "Fail to Load File" << endl; exit(0); } char ch; while(!f.eof()){ f.get(ch); cout << ch; } return 0; } }}}