정수 1 2 3 4이외에 입력되는걸 모두 예외처리할려고 짜봤는데.. 정상적으로 작동이 되고 1234 이외에는 모두 예외처리가 됐는데
제가 생각하고 짠거랑 너무 다르게 작동해서 왜이런지 생각해봣는데 2시간이 지나도 모르겠어요 ㅠㅠㅠㅠㅠㅠ
정수 1 2 3 4이외에 입력되는걸 모두 예외처리할려고 짜봤는데.. 정상적으로 작동이 되고 1234 이외에는 모두 예외처리가 됐는데
제가 생각하고 짠거랑 너무 다르게 작동해서 왜이런지 생각해봣는데 2시간이 지나도 모르겠어요 ㅠㅠㅠㅠㅠㅠ
예상대로 잘됏다면서 머가 다르단건데 좀 알아먹게 써놔라 c언어 이전에 의사소통 하는 법 부터 배워야 할 듯
죄송한데 한글 읽을 수 있으신거 맞죠? if(num < 1 || num >4)를 짠 이유가 저 범위 밖의 정수 입력시 if문을 만족시키려고 짠건데
프로그램 실행시 문자열이나 실수도 if문을 만족해서 이유를 모르겠단 말인데요
asdf 를 쓰면 a에해당하는 아스키코드(숫자) 가 들어감 그게 4보다 커서 그럼
그리고 니가 말을 이상하게하는 거다. 숫자에 한해선 잘 되는데 문자를 쓰면 저기 들어간다고 써야지 되는데 안되요 이렇게 썼잖아
니 쪼매난 코드의 주석은 읽지도 않앗다 누워서 폰 보는데 글에다 좀 적어라
정수 실수 문자가 컴퓨터에서 어떻게 처리되는지 알아봐라
자료형 혹은 타입은 메모리만 보면 모르는거고 플밍 언어 레벨에서 존재하는 거니깐 실제 데이터는 다 숫자다
그리고 글삭 하지마셈 답변해준 사람들 성의를 생각해서 그리고 이런 비슷한 질문 할 애들이 검색도 하게
감사합니다.
그리고 밑에 애가 잘못가르쳐줫으니 직접 알아보도록 ㅋㅋ
ㅇㅇ 입력 버퍼의 4바이트를 읽는 게 아님 문자를 int로 바꾸는거
메뉴를 enum 으로 짜라.
일단 글을 좀 잘 쓰고
scanf는 %d가 정수 서식문자이니 입력 버퍼의 4바이트를 읽어서 정수형으로 읽어들임 물론 입력 버퍼에 있는 010101010001이 뭔지는 모름 아무튼 정수형으로 바꿔서 num에 저장함
그리고 대부분의 경우 저장된 값은 1, 2, 3, 4가 아니라 범위 밖일 거고, 따라서 첫번째 if에 걸리고 myflush()로 인해서 남은 입력 버퍼는 지워지게 됨. 이게 없었으면 디버깅하기 쉬웠을 듯
실수나 문자열도 마찬가지임 %d로 인해 자기 마음대로 읽어서 아무튼 num에다가 가져다 넣고 첫번째 if문에 대부분 걸림
이건 그냥 입력을 조심히 하는 수밖에 없음 C++에는 입력이 알파벳인지 숫자인지 리턴하는 함수도 있었는데 C는 모르겠네 아무튼 1.0 입력해도 1, 2, 3, 4 중 하나를 입력하라고 재입력을 요구하면 됨
실수도 지맘대로 읽는데 왜 1~4사이의 실수는 마지막 else if문에 걸릴까요 ? 실수를 %d로 받을때에는 입력된 실수를부동소수점 방식으로 저장해놨다가 마지막 입력버퍼 4바이트 읽는거 아닌가요?
차라리 입력을 char input으로 선언하면 아무튼 한 글자만 읽고 입력 버퍼에 남은 나머지는 다 지워버리니까 이게 더 나음 이러면 1.0 입력해도 1번 항목 실행됨
아 주석에 써놨네 실수는 그렇게 지맘대로 안 읽고 1.0 하면 1 읽어들임 그런데 입력버퍼에 .0이 남아있어서 그럼
몽땅 첫번째 if로 간다는줄
감사합니다...
귀엽노