개발/C, C++
scanf로 문자열과 공백 받기
피로물든딸기
2021. 3. 16. 01:02
반응형
아래와 같은 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;
}
반응형