C기초 질문드려도 될지 모르겠지만... 한번 여쭤봅니다 ㅠ
글쓴이: conger / 작성시간: 화, 2012/01/10 - 3:20오후
//3시간 4분 20초를 초 단위로 환산하여 출력하는 프로그램을 작성하시오, 시분초는 입력함수로 키보드에서 부터 입력을 받음// //1시간 : 3600초, 1분 : 60초// #include <stdio.h> void main() { int hour,min,sec; long result; printf("환산할 시간 분 초를 순서대로 입력하십시요 (예 : 3시간 3분 3초 : 3 3 3) : "); scanf("%d %d %d",&hour, &min, &sec); result=hour*3600+min*60+sec; printf("\n\n초로 계산했을 경우 %ld입니다",result); }
제가 처음에 SCANF부분에 %d %d %d 이런식으로 작성을 안하고, %d,%d,%d 이런식으로 입력을 하니 마이너스 이상한 값이 출력이 되었는데,
혹시 왜 이런건지 아시는분 계시면 도움좀 부탁드립니다... 진짜 기초중에 기초인데 왜 이런 차이가 발생하는지 모르겠습니다... ㅠㅠ
Forums:
SCANF 는 엔터(\n) 까지의 글자를 읽어서
SCANF 는 엔터(\n) 까지의 글자를 읽어서 출력해주는 함수입니다.
%d %d %d
정수(스페이스)정수(스페이스)정수 이렇게 하셧다면 3 3 3 이 맞고
%d,%d,%d
이렇게 한다면
정수와 정수를 , 로 구분한다는 뜻이므로 3,3,3 하면 정상적으로 됩니다..
%d,%d,%d 로 코드를 컴파일 하고 입력을 '3 3 3'으로 하면
1번째 hour 에는 정상적으로 앞에 3이 들어가겟지만,
2번째 min 과 3번째 sec 는 소위 말하는 쓰레기값이 들어가게 됩니다.
scanf함수 입장에서 ',' 로 구분하기로 했는데, ','가 없으니 뒤에 2,3번째(min,sec)에는 넣을값이 없는겁니다.
쓰레기값이 들어가는 이유는 초기화가 없기 떄문입니다..
현재 코드에서
scanf 전에 hour, min sec 값을 찍어보고 scanf 직후 hour, min, sec 를 찍어보시면 min 과 sec 는 바뀌지 않습니다..
오! 감사합니다
이유까지 친절하게 풀어주셨네요 ㅠㅠ 정말 감사드려요 새해 복 많이 받으세용...
댓글 달기