[디딤돌 C언어] 27. getchar, gets, gets_s 함수
int getchar(void);
getchar 함수는 최종 사용자가 입력한 스트림에서 하나의 문자 아스키 코드 값을 얻어오는 함수예요.
◈ getchar 함수를 사용한 예
#include <stdio.h>
int main()
{
char c = '\0'; //char 형 변수 c를 선언하고 '\0'(널문자)로 초기화
c = getchar();
printf("문자: %c 아스키 코드 값: %d \n",c, c);
c = getchar();
printf("문자: %c 아스키 코드 값: %d \n",c, c);
c = getchar();
printf("문자: %c 아스키 코드 값: %d \n",c, c);
return 0;
}
실행 결과
ab (최종 사용자가 ab를 입력했다고 가정)
문자: a 아스키 코드 값: 97
문자: b 아스키 코드 값: 98
문자:
아스키 코드 값: 10
char * gets(char *buf);
char * gets_s(char *buf ,size_t size);
gets와 gets_s 함수는 최종 사용자가 입력한 스트림을 입력 인자로 받은 메모리에 문자열로 설정하는 함수죠.
반환 값은 입력 인자로 전달받은 메모리 주소를 그대로 반환해요.
gets 함수는 버퍼의 크기를 전달하지 않아 버퍼 오버플로우 버그가 발생할 수 있어요.
이를 개선한 함수가 gets_s 함수예요.
그리고 gets와 gets_s 함수는 공백을 포함하여 문자열을 입력받을 수 있어요.
◈ gets_s 함수를 사용한 예
#define MAX_NAME_LEN 100
#define MAX_ID_LEN 100
#include <stdio.h>
int main()
{
char name[MAX_NAME_LEN+1] ="";
char id[MAX_ID_LEN+1]="";
printf("이름을 입력하세요.\n");
printf("입력한 이름은 %s입니다.\n",gets_s(name,sizeof(name))); // 리턴 값을 이용해 출력
printf("%s의 아이디를 입력하세요.\n",name);
gets_s(id);
printf("%s의 아이디는 %s입니다.\n",name,id);
return 0;
}
◈ 실행 결과
이름을 입력하세요.
홍길동 (최종 사용자가 홍길동을 입력했다고 가정)
입력한 이름은 홍길동입니다.
홍길동의 아이디를 입력하세요.
eh.hong (최종 사용자가 eh.hong을 입력했다고 가정)
홍길동의 아이디는 eh.hong입니다.
동영상 강의
[C언어 무료 동영상 강의] 27. getchar, gets, gets_s 함수
관련 게시글
앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요.
2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
32. 비트 연산자 (0) | 2016.01.01 |
---|---|
31. 비교 연산자 (0) | 2016.01.01 |
30. 논리 연산자 (0) | 2016.01.01 |
[디딤돌 C언어] 29. 산술 연산자 (0) | 2016.01.01 |
[디딤돌 C언어] 28. 정리하기 (표준 입출력 개요) (0) | 2016.01.01 |
[디딤돌 C언어] 26, scanf, scanf_s 함수 (0) | 2016.01.01 |
[디딤돌 C언어] 25. putchar, puts 함수 (0) | 2016.01.01 |
[디딤돌 C언어] 24. printf 함수 (0) | 2016.01.01 |
[디딤돌 C언어] 23. 표준 입출력 개요 (0) | 2016.01.01 |
22. 정리하기 (0) | 2016.01.01 |