이해할수 없는 scanf함수
글쓴이: gurumong / 작성시간: 목, 2007/03/22 - 2:16오전
프로그래밍을 하다가 제가 이상한 문제에 맞닥드려는데
제 상식으로는 도저히 이해할수 없네요
문제를 재현해보기 위해서 짧은 코드를 짜보았는데요
(Windows XP에서 Dev-C++을 이용했습니다)
단순하게
s라는 int형의 변수와
p라는 char형의 변수를
scanf함수를 이용해서 입력 받은후 출력하는 코드입니다
입력 예제로 1 k 를 입력한다면 예상했던데로 정상적인 출력 1 k 이 됩니다
그런데 비정상적인 입력인 k k를 입력하면...
상식적으로 이해할수 없는 s와 p에 초기값으로 주었던 97 b가 출력이 됩니다
k k를 입력함으로써 scanf함수가 입력을 아예 받아들이지 않았다는 것인데
왜 이런 결과가 나오는것일까요?
#include <stdio.h> int main(void) { int s='a'; char p='b'; scanf( "%d %c", &s, &p); printf("%d %c", s, p); getch(stdin); return 0; }
Forums:
scanf는 잘못된 인자가 들어오면 거기서 읽는걸 멈추고 읽은 갯수를 return 합니다.
scanf는 잘못된 인자가 들어오면 거기서 읽는걸 멈추고 읽은 갯수를 return 합니다.
저기선 2개 모두 성공하면 return 값이 2 한개만 성공하면 1 모두 실패하면 0 입니다.
첫번째로 k가 들어가면 첫번째부터 실패니깐 성공한것 없이 바로 끝나 버립니다.
고로 scanf가 없는것과 같게 되죠.
새 생각 :)
새 생각 :)
답변 감사합니다!
제가 이렇게 멍청하답니다! T.T
scanf가 반환값이 있는지 몰랐었네요
그냥 숫자던 문자던 다 알아서 바꿔서 입력을 받는줄로 알고있었답니다 T.T
댓글 달기