티스토리 뷰
scanf 의 parameter는 아래와 같이 3가지로 분류된다.
- Whitespace charater
- Non-whitespace character, except format specifier(%)
- Format specifier
여기서 whitespace는 아래 중 하나를 말하며, EOT(End of Text)로 인식한다.
' ' | (0x20) | space (SPC) |
'\t' | (0x09) | horizontal tab (TAB) |
'\n' | (0x0a) | newline (LF) |
'\v' | (0x0b) | vertical tab (VT) |
'\f' | (0x0c) | feed (FF) |
'\r' | (0x0d) | carriage return (CR) |
위 표에서도 나와있듯이 공백은 whitespace중 하나이기 때문에 데이터가 아닌 종료문자로 인식된다.
따라서 아래와 같은 코드에 공백이 포함된 문자열을 입력하는 경우, 공백 이전까지의 문자만 출력된다.
char arrInput[MAX_LENGTH] = { 0, };
printf("Please type any text : ");
scanf("%s", arrInput);
printf("%s", arrInput);
- input : hello world! space test
- output : hello
공백을 단순 데이터로 입력받기 위해서는, 여러가지 방법이 있겠지만, format spacifier중 하나인 [^characters]를 통해 가능하다.
이는 negated scanset으로 해당 문자만 whitespace로 인식하게 된다.
따라서 아래와 같이 scanf에 parameter를 설정하면, 원하는대로 공백을 입력받을 수 있다.
char arrInput[MAX_LENGTH] = { 0, };
printf("Please type any text : ");
scanf("%[^\n]s", arrInput);
printf("%s", arrInput);
- input : hello world! space test
- output : hello world! space test
참고
'Programming > C' 카테고리의 다른 글
C :: ASCII Table :: 아스키 코드 :: 아스키 코드표 (0) | 2015.09.30 |
---|---|
C :: 파일 입출력 :: File access mode (0) | 2013.03.25 |
C :: system 함수 (0) | 2013.03.11 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- LiveTemplate
- Programming
- 안드로이드 스튜디오 라이브 템플릿
- 코틀린
- Android
- 코틀린 기초강의
- 영어회화
- android studio
- 안드로이드
- 코딩
- 안드로이드 바텀시트
- 개발자
- 안드로이드 컴포즈
- 영어발음
- live template
- 안스 템플릿
- 런탭
- Java
- 문제풀이
- 코딩문제
- kotlin 기초
- 자바
- 코틀린 기초
- Kotlin
- 프로그래밍
- 프로젝트오일러
- php
- compose bottomsheet
- 컴포즈 바텀시트
- 안드로이드 스튜디오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함