scanf의 반환 값은 그 때 사용하는 것이다. scanf("%d", #); 처럼 하나를 입력받을 경우 하나가 성공적으로 입력되면 scanf는 1을 반환한다(두 개면 2, 세 개면 3 이런 식). 하지만 문자를 입력하거나 값을 입력하지 않고 Ctrl+Z 엔터 하거나 등등 값을 하나라도 성공적으로 입력받지 못하면 그 미만의 값을 반환하지. 그래서 if(scanf("%d", #) < 1) { fprintf(stderr, "오류입네다\\n"); } 식으로 오류 처리하면 된다.
ㅅㅅㅅ(125.128)2015-04-16 20:48
#이 아니라 &num인데 변환되었노...
ㅅㅅㅅ(125.128)2015-04-16 20:49
ㅅㅅㅅ아재요 scanf 포맷에 적힌 인수 수만큼 입력 안되면 계속 입력받습네다...
nono(59.23)2015-04-16 20:52
포맷스트링.. 기억이 가물가물.. 아니 애초에 아는게 없구나. ㅠㅠb
농업인(121.151)2015-04-16 20:52
ㅅㅅㅅ말이 맞긴한데 숫자가 단한글자라도 포함되면 입력에성공한다. %d형식지정 하나에 ab12cd가 입력되면 12가들어가고 리턴도 1됨
문자를 입력 받아서 그 문자가 숫자인지 판단해라.
scanf의 반환 값은 그 때 사용하는 것이다. scanf("%d", #); 처럼 하나를 입력받을 경우 하나가 성공적으로 입력되면 scanf는 1을 반환한다(두 개면 2, 세 개면 3 이런 식). 하지만 문자를 입력하거나 값을 입력하지 않고 Ctrl+Z 엔터 하거나 등등 값을 하나라도 성공적으로 입력받지 못하면 그 미만의 값을 반환하지. 그래서 if(scanf("%d", #) < 1) { fprintf(stderr, "오류입네다\\n"); } 식으로 오류 처리하면 된다.
#이 아니라 &num인데 변환되었노...
ㅅㅅㅅ아재요 scanf 포맷에 적힌 인수 수만큼 입력 안되면 계속 입력받습네다...
포맷스트링.. 기억이 가물가물.. 아니 애초에 아는게 없구나. ㅠㅠb
ㅅㅅㅅ말이 맞긴한데 숫자가 단한글자라도 포함되면 입력에성공한다. %d형식지정 하나에 ab12cd가 입력되면 12가들어가고 리턴도 1됨