본문 바로가기

# IT, Computer Science/C , C++

scanf로 공백(white space)까지 포함하여 읽기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

간단하게, 

char temp[256];
scanf("%s", temp);
printf("%s", temp);

에서 space를 콘솔화면에 입력하면 공백(white space)을 제대로 결과값을 못내고 있는 모습을 볼 수 있다.

이에 대한 해결책으로 

1. gets() 함수를 사용하여 받으면 공백도 물론 읽을 수 있다.

하지만 scanf를 꼭 써서 공백문자(white space)를 읽어야한다면 한다면?!

2. scanf("%[^\n]", temp); 와 같은 방식으로 해주면된다.

이는 \n 가 나오기 전까지 읽게 한다. 즉 개행문자가 나오기전... 한문장이 끝나기 전까지 읽어온다.

그러면 공백(white space)까지 scanf로 읽어올 수 있게된다.




ps) scanf("%[^5]", temp); 는 무엇을 뜻할까?

5가 나오기 전까지 읽어드린다는 말이다.

위의 코드에서 123456789 등등 더 많은 문자밑 숫자를 입력해도
1234까지만 출력된다. 5가 나오기 전까지 읽는것이므로...