kmc0487   2년 전

안녕하세요! 밑에 코드는 블로그에 올라온 코드 참고해서 따라한거긴 한데 왜 %[^\n]대신 %s를 쓰면은 strlen이 띄어쓰기 전까지만 읽히고 arr에도 띄어쓰기 전까지의 값들만 들어가나요....?? 조언 부탁드려요 ㅠㅠ

dldyddlwl   2년 전

scanf를 공식문서에서 찾아보면, scanf("%s")는 다음과 같이 서술되어있습니다.

Any number of non-whitespace characters, stopping at the first whitespace character found. A terminating null character is automatically added at the end of the stored sequence.

라고 되어있습니다. 즉, 첫 번째 화이트 스페이스(공백, 스페이스바, 엔터도 포함)를 만나면 입력이 멈춘다는 것이죠. 

그래서 띄어쓰기 전까지만 읽어줍니다. null character 또한 거기서 끊어주기 때문에, strlen도 거기까지만 읽어주는 것이죠!

kmc0487   2년 전

감사합니다!!

댓글을 작성하려면 로그인해야 합니다.