scanf("%d", &a);
while(1){
if(a>=25 && a<=40)
{
printf("문제없다.\n\n\n\n");
break;
}
else{
printf("잘 못 입력했다.\n");
scanf("%d", &a);
}
}
a를 입력받는데 a가 무조건 25~40 범위 내의 정수였으면 좋겠음
근데 그게 아닐시에 다시 입력하게끔 반복문 만들어놓고
a값에다가 문자 막 쳐서 넣으니까
잘못입력햇다 무한루프됨니다
어떻게 고쳐야 하지요..?
scanf("%d", &a);
while(1){
if(a>=25 && a<=40)
{
printf("문제없다.\n\n\n\n");
break;
}
else{
printf("잘 못 입력했다.\n");
scanf("%d", &a);
}
}
a를 입력받는데 a가 무조건 25~40 범위 내의 정수였으면 좋겠음
근데 그게 아닐시에 다시 입력하게끔 반복문 만들어놓고
a값에다가 문자 막 쳐서 넣으니까
잘못입력햇다 무한루프됨니다
어떻게 고쳐야 하지요..?
문자를막치면 문자열이 입력으로들어가는데 여기선 %d정수입력이니까 컴퓨터가 무한루프돌졍
ㄴ 근데 scanf(%d)에다가 문자열 막친다음에 printf 해보니까 0나오길래...... 당연히 0나오는줄알았는데..방법없나요??
getchar();를 printf("잘못입력했따) ㄷ다음줄에 써보샘
아니 이게 근본적인해결방법은 숫자만 집어넣어야하는데 문자를집어넣으면안되요
scanf("%d" 자체가 문자입력인걸로알고있어요
지금 사용자가 콘솔창에 10을쓰면 그게 다이렉트로들어가는게 아니라 인풋스트림이라는 버퍼에 그값이 복사되서 들어가여. 나도 내부를몰라서 scanf에서 어떻게정확히 처리되는지 모르는데 인풋스트림에서 %d로 정수형처리에 맞게 처리해야하는데 뜬금없이 문자열이 넘어와버리면 재대로 동작을할수가없어영
흐린바다 - 문제는 저거로 나온 값을 써먹어야하는데 getchar로 받으면 숫자를 문자형식으로 받아서 끌어다가 못쓰지 않나요?
단순하게 문자만 입력하면 아스키코들 들어올텐데 문자열로 집어넣으면 무슨문제가 생길듯함
ㄴnyangd.. : 그러면 scanf 말고 다른 방법은 없습니까..?
아니.. 애초부터 숫자만 집어넣겠다 라고한거라서 문자열 asbdfsg이렇게 입력하면안되는거에여. 지폐교환기 1000원짜리만교환되는데 만원왜안되지 하는거랑비슷해요
getchar로 숫자를받으라는게아님 scanf받을때 버퍼비우는용도로쓰는거지
흐린바다//fflush(stdin)써도되긴하는데 무작정 비워버리면 정상입력도 먹히지않나여
아닌강
내입은 방울토마토가 한번에 5개들어갈수있는데 지금 그입에다가 방울토마토 한봉지를 한번에 넣을려고 하고있어요.
나라면 좀더 음탕한 비유를 했을 거 같다
ㄴ흐린바다 : getchar() 썼는데 일단 무한루프는 안도는데 대신에 저기에 숫자말고 문자를 예를들어 k 하나 넣으면 잚롯입력햇다 한번 뜨고 kk 넣으면 잘못입력햇따 2번뜨고 kkk하면 세번뜨고.. 이런식으로 작동되네요
nyangduck//되요->돼요 (되어 = 돼임) [리듬 맞춤법 봇♬]
nyangduck//되서->돼서 (되어 = 돼임) [리듬 맞춤법 봇♬]
nyangduck//거에여->거예여 (받침 있으면 이에요 없으면 예요 이로 끝나면 받침 없으므로 예요 아니에요는 예외 인명엔 예요(예 : 길동이예요) 성까지 쓰면 이에요(예 : 홍길동이에요)) [리듬 맞춤법 봇♬]
http://gall.dcinside.com/board/view/?id=programming&no=604567