본문 바로가기
C, C++/배우기

[C] scanf로 공백포함 문자열 입력받기

by 야호호코코 2018. 7. 5.
반응형

 공백을 포함한 문자열을 받을 때, 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