C 언어 scanf 함수에서 공백 포함된 문장 입력받기
글. 수알치 오상문
scanf 함수의 %s 서식 입력 방식은 화이트스페이스(빈칸, 탭, 엔터)가 있으면 입력을 종료합니다.
그래서 I love you. 같은 문장을 입력하면 중간에 끊어져버립니다.
이런 경우에는 %[ ] 서식을 입력합니다. 이 서식은 크게 두가지 형태로 사용합니다.
포함해야할 문자와 포함하면 안되는(즉, 종료에 사용할) 문자...
[ ] 안에 포함하고 싶은 문자들을 적습니다.
만약, 제외하고 싶은 문자들(종료 문자)을 적고 싶으면 '^' 문자로 시작하면 됩니다.
(1) 0123456789로 이루어진 문자열을 입력받고 싶을 때
%[0123456789]
%[0-9]
%[9-0]
(2) 스페이스(빈칸)도 입력받고 싶을 때(탭, 쉼표, 엔터 키로 종료함)
%[^,\t\n]
(3) 스페이스(빈칸)와 쉼표(,)도 입력받고 싶을 때(탭이나 엔터 키로 종료함)
%[^\t\n]
[참고] 문자열 정규식 (String Regular Expression)
소개한 scanf 입력 기능은 정규식과 관련된 것입니다.
정규식 표현법은 다른 언어에서도 사용되므로 궁금하신 분은 정규식을 검색해서 공부하세요.
[예제]
#include <stdio.h>
#include <string.h>
int main( )
{
char pw[100];
printf("Enter your password: ");
scanf("%[^,\t\n]", pw); // 쉼표, 탭, 엔터를 만나면 종료
// scanf("%[^\n,]", pw); // 엔터, 쉼표를 만나면 종료
// gets(pw); // fgets(pw, sizeof(pw), stdin);
if(strcmp(pw, "I like you!") == 0)
printf("로그인합니다.\n");
else
printf("로그인 실패!\n");
return 0;
}
'C' 카테고리의 다른 글
WELL Random number generator, WELL 랜덤 함수 소스 코드 (0) | 2022.05.13 |
---|---|
C 언어 동영상 강의 (입문부터 게임 개발까지) (0) | 2021.06.08 |
C 언어, 한글 초성 분리 (0) | 2021.02.16 |
C 언어, 문자열 슬라이싱(일부분) 복사하기 (0) | 2020.09.28 |
C 언어, 달팽이 배열 출력 (0) | 2020.08.18 |