1. scanf()
- 여러 형식의 데이터를 입력 받을 수 있다. (정수, 실수, 문자, 문자열)
- 입력 버퍼에서 데이터를 공백이나 엔터키로 구분하여 프로그램으로 읽어 들린다.
- 공백을 읽을 수가 없기 때문에 문자열을 입력받는 함수로 적합하지 않다.
1 | scanf("%s", str); | cs |
2. gets()
- 문자열을 한 줄씩 입력받는 함수이다.
- 줄 바꿈(enter) 하는 곳에 \0이 붙여진다.
- 문자열의 시작위치만 알 수 있어 문자열 저장공간의 범위를 넘을 수 있는 위험이 있다.
1 | gets(str); | cs |
3. fgets()
- 여러줄의 문자열을 입력받는 함수이다.
- 줄 바꿈(enter)를 포함한 모든 문자열 끝에 '\0'을 붙여서 읽어 드린다.
- gets와 다르게 입력받는 메모리 사이즈를 지정하므로 안전성이 좋다.
1 2 3 | fgets(str, sizeof(str), stdin); str[strlen(str)-1] = '\0'; // fgets()로 입력받고 줄바꿈 문자를 제거 | cs |
// C++에서 gets는 지원하지 않는다 때문에 fgets를 사용해야 한다.
strlen을 사용하려면 #include <cstring>을 써줘야한다.
'C++ 공부' 카테고리의 다른 글
| 범위 기반 for문 및 문자열 분할 (0) | 2018.09.25 |
|---|---|
| strlen함수의 잘못된 사용 (0) | 2018.09.06 |
| cin과 cout이 scanf와 printf보다 느린 이유와 해결방법 (0) | 2018.08.30 |
| typedef int Data 라고 쓰는 이유 (0) | 2018.08.28 |
| #define과 enum의 차이 (0) | 2018.08.16 |