Programming 언어/C언어

문자열 입력 함수

하냥집사 2023. 1. 19. 15:56

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이 들어갑니다.