명령 프롬프트(Cmd) 작성 _System Programming

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <tchar.h>
#include <locale.h>

#define STR_LEN 256                                                   // 문자열 길이
#define CMD_TOKEN_NUM 10                                      // 입력가능한 최대 문자열 개수

TCHAR ERROR_CMD[100] = _T(" '%s'는 실행할 수 있는 프로그램이 아닙니다. \n");

INT_PTR CmdProcessing();
TCHAR* StrLower(TCHAR*);

INT_PTR _tmain(INT_PTR argc, TCHAR* argv[])
{
       _tsetlocale(LC_ALL, _T("Korean"));                         // 유니코드 한글을 입력받기 위해
       INT_PTR isExit;

       while(TRUE)                                                         // 무한루프
       {
                isExit = CmdProcessing();
                if(isExit == TRUE)
                {
                          _tprintf(_T("종료합니다. \n"));
                          break;
                }
       }
       return 0;
}

TCHAR cmdString[STR_LEN] = {0};
TCHAR CmdTokenList[CMD_TOKEN_NUM][STR_LEN];
TCHAR seps[] = _T(" , \t \n");

INT_PTR CmdProcessing()                                           // 명령어 입력받아서 해당 명령어 기능 수행 함수
{
        _tprintf(_T("Command Prompt >> "));
        _tscanf(_T("%s"), cmdString);                               // 명령어 입력받음

        TCHAR* token = _tcstok(cmdString, seps);             // 명령어를 분리함, ex) copy a b  -> copy,    a,      b
        INT_PTR tokenNum = 0;

        while(token != NULL)
        {
                _tcscpy(CmdTokenList[tokenNum++], StrLower(token));  // 분리된 문자열이 없을때까지 
                                                                                                  // 모두 소문자로 변경한 명령어를 붙여넣음
                token = _tcstok(NULL, seps);
        }

        if(!_tcscmp(CmdTokenList[0], _T("exit")))                                
        {
                 return TRUE;
        }

        else if(!_tcscmp(CmdTokenList[0], _T("추가명령어")))             // 명령어가 개수만큼 else if 추가
        {

        }
      
        else                                                                                   // 해당명령어가 없으면 에러출력
        {
              _tprintf(ERROR_CMD, CmdTokenList[0]);
         }
         return 0;
}

TCHAR* StrLower(TCHAR* pStr)                                      // 대문자 -> 소문자 (대소문자 구별없게 하기 위해서)
{
         TCHAR* ret = pStr;
       
         while(*pStr)                                                          // NULL 만날때까지 반복,
         {
                 if(_istupper(*pStr))                                         // 대문자이면
                 {
                         *pStr = _tolower(*pStr);                           // 소문자로 변경
                 }

                 pStr++;
          }      
          return ret;
}



덧글

댓글 입력 영역


통계 위젯 (블랙)

85
32
54502

블로그 랭킹 위젯

마우스오른쪽금지