프로그래밍

 3198, 1/160 회원가입  로그인  
   ERIC910903
   http://blog.naver.com/eric910903
   키보드 Buffer? Input Buffer ? 어ㄷㅓㅎ게 제어 하나요?

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3094 [복사]


가끔 프로그램을 만들다 보면..Array를 사용하는데..

예를들어..


#include<iostream>
#include<fstream>
using namespace std;

int main()
{
        const int Size=100;
        int Yang[Size];

        cout << "값을 입력 하세요" << endl;
        for(int i=0; i < Size; i++)
        {
                cin >> Yang[i];
                cout << Yang[i];
        }
        return 0;
}

이럴게 프로그램을 만들고 나서..
실행을 하고 나서..

"값을 입력 하세요" 나오고

입력을 만약 y를 하면.. 즉 숫자가 아닌 문자로 하면..

Input buffer이라고 하는지.. 뭐라고 부르는지 모르겠지만..
아님 메모리 오류 인가?

어쨋든..

y를 입력 하면..

프로그램이 멈추고..
아무 숫자가 막.....나옵니다..

어떻게 하면.. 프로그램을 짤수 있나요?
예를들어
"내가 숫자든 문자든 입력 할때니.. 숫자면.. 그대로 메모리에 넣고.. 문자면......숫자가 아니라고 하면서..다시 User한테 물어봐"

즉
int 를 사용해서..
문자면.. 다시 묻고
숫자면 받아 드리고..

부탁드립니다


  Hit : 5544     Date : 2011/07/13 11:39



    
jcjh8192 휴 새벽에 리눅스 건들다가 검색해보려고 왔는데...;;
열심히 공부하시는거같아서ㅋㅋㅋㅋㅋ

음.. 이건 아스키 코드값으로 처리해야 할 것 같네요.

한번에 최대 100개까지 입력하는게 아니라

한글자한글자씩 100개 입력받는거 맞나요?

일단 맞다는 가정하에 코딩해볼게요.

#include <iostream>
using namespace std;
int main(){
const int Size = 100;
char Yang[Size], buffer;
for(int i=0 ; i<Size ; i++){
do{
cout << i << "번째 값을 입력하세요 : ";
cin >> buffer;
}while(buffer>=48 || buffer<=57);
//먼저 설명하기전에 앞서 char형 변수는 숫자로도 처리할 수 있습니다.
//buffer는 char형 변수인데 'a' 이런 문자가 아니라 그냥 48이나 57이라고 쓴거 보이시죠?
//인터넷에 아스키코드 검색해보면 0의 아스키코드값이 48이고 9의 아스키코드값이 57입니다.
//즉, 48~57은 0~9까지의 숫자이고 48보다 작거나 57보다 크다면 문자라는 얘기죠.
//그걸 이용해서 숫자인지 문자인지 판별하는거에요.
//숫자가 아니라면 위에 do while문을 반복하고 숫자라면
//do while문을 빠져나와 아래 한줄이 실행됩니다.
Yang[i] = buffer;
//do while문을 빠져나왔다면 현재 buffer는 숫자라는 얘기니 Yang배열에 넣어줍니다.
}
return 0;
}

혹시나 더 궁금한점이 있으시면 연락주세요.
제가 여기 자주 안오니 스마트폰 갖고계시다면 카톡 hbin87 로 주셔도 되구요.
없으시다면 네이트온 jcjh8193@naver.com 으로 연락주셔도 되구요.
열공하세요~^^
2011/07/14  
ERIC910903 옛날에 제가 프로젝트 때문에 사용한 방법과 비슷하군요..
저도 옛날에 하나 하나식 아스키코드로 구별했는데.. 이 방법으로 제가 원하는 답을 찾군요.
감사합니다..

좋은 하루 되세요..^^
2011/07/18