C/C++ 언어 getchar() 함수 버퍼 문제


<버퍼 문제 코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main() {
  char ch1, ch2;
 
  printf("Enter a character ? ");
  ch1 = getchar();
  printf("ch1 : %c \n",ch1);
 
  printf("Enter a character ? ");
  ch2 = getchar();
  printf("ch2 : %c \n",ch2);
  printf("end... \n");
 
  return 0;
}
cs


키보드 입력을 한번만 받아도 종료되는 문제가 발생


<버퍼 문제 해결 코드 1>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main() {
  char ch1, ch2;
 
  printf("Enter a character ? ");
  ch1 = getchar();
  printf("ch1 : %c \n",ch1);
  getchar();
  printf("Enter a character ? ");
  ch2 = getchar();
  printf("ch2 : %c \n",ch2);
  printf("end... \n");
 
  return 0;
}
cs


getchar() 함수를 호출하여 버퍼를 비워주는 방법을 사용


<버퍼 문제 해결 코드 2>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main() {
  char ch1, ch2;
 
  printf("Enter a character ? ");
  ch1 = getchar();
  printf("ch1 : %c \n",ch1);
  fflush(stdin);
  printf("Enter a character ? ");
  ch2 = getchar();
  printf("ch2 : %c \n",ch2);
  printf("end... \n");
 
  return 0;
}
cs


fflush() 함수로 stdin 표준 입력을 초기화 하는 방법

+ Recent posts