반응형
공백을 포함한 문자열을 받을 때, scanf("%s")로는 해결되지 않습니다. 스페이스 또한 입력의 끝으로 받기 때문입니다.
그 때마다 필연적으로 gets를 쓸 수 밖에 없는데, scanf만을 이용해 공백까지 받아낼 수 있는 방법을 알려드리고자 합니다.
#include <stdio.h> int main() { char str[100]; scanf("%[^\n]s", str); printf("%s\n", str); return 0; }
위와 같은 코드로 scanf만을 이용해 공백을 포함한 문자열을 받을 수 있습니다.
%[^'문자']는 해당 문자가 나오기 전까지 모든 입력을 받는다는 뜻입니다.
그러므로 %[^\n]s는 개행(엔터)가 나오기 전까지 모든 문자열을 받겠다는 얘기죠! 공백도 포함해서요!
#include <stdio.h> int main() { char str[100]; scanf("%[^s]s", str); printf("%s\n", str); return 0; }
위와 같이 코딩한다면 s가 입력되기 전 문자열만 입력받게 됩니다. 엔터는 기본적으로 입력을 끝낸다는 뜻이기 때문에 무시되지 않습니다.
반응형
'C, C++ > 배우기' 카테고리의 다른 글
[C] 자료형 정리 (0) | 2018.07.18 |
---|