char str1; char str2; char str3;
char* fmt = \"%[^\\n]%*c\";
scanf (fmt, &str1);
scanf (fmt, &str2);
scanf (fmt, &str3);
위의 코드가 왜 동작하는지 잘 이해가 안가서 질문 드립니다
입력 예시
a(엔터)
b(엔터)
c(엔터)
(프로그램 종료)
1. scanf가 stdin에서 a를 읽음 \\n인지 xor연산을 함 ㅇㅋ 아니군
*를 통해서 stdin에 있는 값을 무시함 근데 이미 stdin에는 아무것도 없다?
a는 이미 stdin에서 scanf에게 전달해버리고 없음 그러므로 *는 의미없음
%c 때문에 a는 str에 character 형으로 넣어짐
2. (엔터)가 stdin을 타고 들어옴 \\n인지 xor연산을 함 ㅇㅋ 맞군 -> 무시됨
*가 stdin에 뭐가 있는지 살펴봤으나 아무것도 없음
%c는 일을 하고 싶었지만 scanf의 종료조건인 strlen(\"\\n\")에 의해 무시 당하고 사망
위와 같은 동작이 반복
하지만 위의 해석은 이유를 모르겠지만 틀림
fmt의 %*c를 %*d로 정수형으로 받게 고치면 동작을 안함
(물론 변수도 int str1; scanf내의 인자도 &str1로 수정함)
혹시 scanf에 대해 잘 아시는 분 계시면 시원한 답좀
C 안한지 너무 오래 되서..
우왕 감사합니다