c언어를 공부할 때 사용하기 헷갈렸던 문자열 입력 함수에 대해 다루어 보도록 하겠습니다~
getchar 함수
키보드로부터 문자 하나를 입력받는 표준 입력 함수(문자 한 개 입력받더라도 enter 키 눌러야 함)
getchar 함수는 int 형식으로 데이터 반환 근데 char형으로 받아도 괜찮음(원형이 int getchar(void);)
만약 getchar을 두 번 사용하면 두 번째 getchar 함수는 enter의 키값을 받게 되어 아무것도 출력 x 줄 바꿈만 일어남
->해결 방법 : getchar()에 한 번 더 getchar() 사용
근데 위 해결 방법은 별로!! 결국 근본적인 원인은 다른 문자들이 입력 버퍼에 남아서 생기는 문제임
즉 입력 버퍼를 초기 상태로 비워서 남아 있는 문자들을 모두 제거
—> rewind 함수 rewind(stdin); 사용
getc 함수
getchar 함수는 또 다른 표준 입력 함수인 getc 함수로 대체할 수 있다
getc 함수를 이용해서 키보드로 입력→표준 입력 장치를 의미하는 stdin을 인수로 넘겨줘야 함
input_data=getc(stdin) 근데 잘 사용 안 한다고 합니다.
gets 함수
gets(저장할 배열);
문자열을 입력받는 표준 입력 함수 한 번에 여러 문자를 입력받을 수 있고 enter 키를 입력할 때까지 입력한 모든 문자를 하나의 문자열로 간주
그리고 문자열 저장 위해서 gets 함수의 매개변수에 char 배열로 선언된 변수의 시작 주소 넘겨줘야 함
—>입력 버퍼에서 enter 키까지 읽어와서 처리하기에 입력 버퍼에 enter 키가 남아있지 않음.
rewind(stdin) 사용 안 해도 괜찮음!
enter 키 가져온다고 해서 enter 키값을 문자열에 포함시키는 것이 아니라 입력 완료의 기준으로 사용하기에 실제 문자열에는 enter 키를 입력한 위치에 NULL 문자 0이 들어갑니다.
'Programming 언어 > C언어' 카테고리의 다른 글
포인터 (0) | 2023.01.20 |
---|---|
함수의 활용 (0) | 2023.01.20 |