char input[100][100] = {0};
cout << "N을 입력 : ";
cin >> N;
while (i < N) {
cin.getline(input[i], 100);
i++;
}
이런식으로 N번의 문자열을 받는 프로그램을 짜고 실행하였는데
N = 3 이라면 3번을 입력받아야 하는데
2번밖에 입력안받는 현상이 생겼다.
버퍼에 남아있는 문자때문에 그렇다고 생각되어
C언어를 할때 쓰던
fflush(stdin);
을 사용하여 버퍼를 비워 보았는데 비워지지 않았다ㅠ
그래서 찾아본 결과
cin.ignore() 로 입력버퍼를 비울 수 있다는 것을 알게되었다.
//////////////////////////////////////////////////////////
char input[100][100] = {0};
cout << "N을 입력 : ";
cin >> N;
cin.ignore();
while (i < N) {
cin.getline(input[i], 100);
i++;
}
///////////////////////////////////////////////////////////
이런식으로 버퍼를 지워주니 getline에서 잘 입력받아 주었다.
'공부 > C & C++' 카테고리의 다른 글
(과제) 트랜잭션 파일 구현하기 (0) | 2016.06.23 |
---|---|
for문 안 int 선언 (2) | 2016.04.16 |
(함수) 메모리 값 바꾸기, 초기화 [memset] (0) | 2016.04.14 |
(함수) 문자열 분리 (strtok) (0) | 2016.04.12 |
(에러) 'strcpy': This function or variable may be unsafe. (0) | 2016.04.01 |