본문 바로가기
개발/C, C++

scanf로 문자열과 공백 받기

by 피로물든딸기 2021. 3. 16.
반응형

C, C++ 전체 링크

 

아래와 같은 input.txt가 있다고 하자.

문자열은 보통 c에서 scanf로 받지만 공백이 있는 경우는 까다롭다.

scanf에 더이상 읽을 파일이 없을 경우 -1(EOF : End of File)을 return하기 때문에 txt의 끝은 알 수 있지만,

input은 공백을 기준으로 file 입력을 끊어버린다.

#include <stdio.h>

int main(void)
{
	char input[100];

	while(scanf("%s", input) != EOF)
	{
		printf("%s\n", input);
	}

	return 0;
}

공백을 기준으로 input에 read 되는 것을 알 수 있다.


이러한 점을 방지하기 위해, scanf에 " %[^\n\r]" 옵션을 넣어주면, 공백을 무시하고 한 줄을 입력 받을 수 있다.

#include <stdio.h>

int main(void)
{
	char input[100];
	while (scanf(" %[^\n\r]", input) != EOF)
	{
		printf("%s\n", input);
	}

	return 0;
}

반응형

'개발 > C, C++' 카테고리의 다른 글

C++ ofstream을 이용한 FILE 출력  (0) 2021.03.18
에라토스테네스의 체 - 소수 판단  (0) 2021.03.16
소수 판단 함수  (0) 2021.03.14
C, C++ - 정수로된 FILE 입력  (1) 2021.03.14
유일한 수 두개  (0) 2021.03.01

댓글