카테고리 없음

[c언어] scanf 공백 입력 받기

2023. 10. 30. 16:29
728x90
반응형
문제

문자열 입출력 함수, gets-puts와 scanf-printf 를 비교 출력하는 코드를 작성하다 문제 상황에 부딪힘.

printf("첫번째 문자열 입력");
scanf("%s", arr);

puts("두번째 문자열 입력");
gets(second);

일반적으로 문자열 입력받는 것과 같이 작성하니 공백에서 입력이 끊기는 것이다.

생각해보니 scanf로 입력받았던 건, 짧은 단어나 공백 없는 문자열이었다.

 

gets를 사용해 공백 포함 문자열을 입력받을 수도 있겠지만,

scanf를 활용하는 방법은 없을까?

 

해결

문자열을 받되, 공백도 입력받으려면 %[^\n] 이라고 작성하면 된다.

scanf("%[^\n]", str);

위의 뜻은 개행문자(\n)을 제외한 모든 문자열을 입력받는다는 뜻이다.

이제는 띄어쓰기도 정상적으로 입력받는 것을 볼 수 있다!

 

어떤 원리에서 이해할 수 있을까?

scanf("%[123]", str);

위의 코드를 작성 후 입력값을 <123456789> 주면, 123에서 더이상 입력받지 않고 끝난다.

%[123] 은 1~3까지의 숫자 입력받는다는 것과 같기 때문이다.

마찬가지로 %[a-z]를 입력하면 소문자만 입력받는다.

 

이러한 원리를 응용하면 %[^\n], 개행문자를 제외한 문자열을 입력받는다 라고 이해할 수 있다.

 

[참고] https://dalkomit.tistory.com/107

저작자표시 비영리 (새창열림)
hatch
hatch
250x250
hatch
차근차근 쌓아올리는,
hatch
전체
오늘
어제
  • 분류 전체보기 (121)
    • TIL (3)
    • [JAVA] (17)
      • 생활코딩 (11)
    • 모바일 (25)
      • android (24)
      • ReactNative (1)
    • 웹개발 (25)
      • React (3)
      • jQuery (5)
      • Springboot (2)
    • 알고리즘 (42)
    • [프로그래밍기초지식] (1)
    • [기술문서 읽기] (0)
      • 개념 번역 (0)
    • 인사이트(insight) (2)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • write
  • manger

공지사항

인기 글

태그

  • scanf
  • 명시적 인텐트
  • 깊은복사
  • 중복리니어레이아웃
  • Doit!자바프로그래밍입문
  • javascript
  • 210908
  • 재귀
  • 백준
  • 노이클립스
  • 모프2주차
  • 반복문
  • state
  • 별찍기
  • TIL
  • 안드로이드프로그래밍6판
  • 타일링
  • DP
  • BufferedReader
  • jquery

최근 댓글

최근 글

hELLO · Designed By 정상우.
hatch
[c언어] scanf 공백 입력 받기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.