몽셀통통의 블로그
scanf 사용시 나타나는 버퍼 문제 getchar() 사용 본문
scanf 사용시 원치않은 값이 들어가 있다면 버퍼 문제를 살펴 보아야한다.
int main() { cin >> R >> C; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { scnaf("%c" ,&arr[i][j]); } } for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { cout << arr[i][j]; } puts(""); } } |
이라고 했을때 정상적인 값이 나올것 같지만
중간중간에 10이라는 값이 섞여 들어가는 것을 확인할 수 있다.
이 값은 엔터값이 들어가면서 아스키 코드 값인 10이 들어가게 되는데 그 값이 된다.
for (int i = 0; i < R; i++) { getchar(); for (int j = 0; j < C; j++) { scnaf("%c" ,&arr[i][j]); } } |
중간에 getchar(); 함수를 넣게되면 엔터값을 받아서 사라지게 할 수 있다.
그 결과 다음과 같은 출력값을 얻을 수 있다.
cin과 cout을 사용하면 getchar 없이도 정상적인 결과값을 출력할 수 있다.
int main() { cin >> R >> C; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { cin >> arr[i][j]; } } for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { cout << arr[i][j]; } puts(""); } } |
cin과 cout을 사용한 출력값
'IT > 함수' 카테고리의 다른 글
c++ 최대/최소 값을 구하는 max와 min 함수 (0) | 2018.05.27 |
---|---|
c/c++ 절대값 구할 수 있는 abs() 함수 (0) | 2018.05.27 |
int형 변수를 string으로 바꾸는 함수 sprintf (0) | 2017.11.26 |