예를들어 이런 scanf가 있으면 예시 1 : scanf("%d %c %d %c",......); 띄어쓰기를 안하면 예시 2 : scanf("%d%c%d%c",,,,,...); >>>이렇게 되는데, 그럼 %c에서 공백을 문자로 받던데 왜 형식지정자끼리 띄어쓰면(위의 예시 1) 그런 현상이 안 나타나는 것일까요
man scanf
https://kldp.org/comment/628584#comment-628584 도움될지도...
세벌 https://sebuls.blogspot.kr/
포맷문자열에 있는 띄어쓰기, 즉 스페이스도 엄연히 의미가 있어서, 입력에 있는 공백문자(스페이스, 탭, 뉴라인)의 덩어리에 매치되어 입력을 받게 됩니다.
scanf(" "); # 1개 이상의 스페이스/탭/개행을 읽음 (스페이스만 읽는 게 아니라) scanf("\t"); # 마찬가지 scanf("\n"); # 마찬가지
그래서 예시1에서는 입력한 공백이 저 스페이스에 매치되어 읽히고 그 다음 공백 아닌 문자가 %c에 매치되는 거고, 예시2에서는 첫 공백 문자가 %c에 매치되어 버립니다.
좋은 하루 되세요!
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
man scanf
man scanf
https://kldp.org/comment/628584#comment-628584 도움될지도...
세벌 https://sebuls.blogspot.kr/
포맷문자열에 있는 띄어쓰기, 즉 스페이스도 엄연히
포맷문자열에 있는 띄어쓰기, 즉 스페이스도 엄연히 의미가 있어서, 입력에 있는 공백문자(스페이스, 탭, 뉴라인)의 덩어리에 매치되어 입력을 받게 됩니다.
그래서 예시1에서는 입력한 공백이 저 스페이스에 매치되어 읽히고 그 다음 공백 아닌 문자가 %c에 매치되는 거고, 예시2에서는 첫 공백 문자가 %c에 매치되어 버립니다.
좋은 하루 되세요!
댓글 달기