1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include<stdio.h> # pragma warning (disable:4996) void main() { int a, b; char s; printf("숫자를 입력하세요 : "); scanf("%d", &a); rewind(stdin); printf("기호를 입력하세요 : "); scanf("%c", &s); printf("숫자를 입력하세요 : "); scanf("%d", &b); printf("합은%d", cal(a,b,s)); } int cal(int a,int b,char s) { int c; if (s == '+') { c = a + b; } else if (s == '-') { c = a - b; } else if (s == '/') { c = a / b; } else if (s == '*') { c = a * b; } return c; } | cs |
가끔씩 이렇게 코드를 짜다보면 rewind(stdin) 같은 처리를 안 해줄시 7번 코드 줄에 값만 넣고 엔터만 쳐도 11번 줄이 넘어가고 바로 14번 줄이 실행될 때가 있습니다.
왜 이러는지 알아봅시다.
이런 오류는 여러가지 변수를 받을 때 자주 나는 문제입니다
왜 이런 오류가 생기느냐면 7번째 줄의 코드 수행중에 만약 7이라는 숫자를 입력하고 엔터를 누른다면 7이 변수 a 자리에 들어가고 엔터가 s 자리에 들어가기 때문에 이런 일이 생기는 것입니다.
그렇기에 만약 이런 오류가 생긴다면
1. getchar()
2. rewind(stdin)
3. " (띄어쓰기)자료형"
4. "%*자료형"
이런 처리를 해주시면 쉽게 오류를 고칠 수 있습니다.
\n 의 입력을 지워주거나 대신 받아준다는 공통점이 있는 처리방식입니다.
'C언어 공부하기 > C언어 예제' 카테고리의 다른 글
C언어 프로그래밍 예제 : 펠린드롬 글자 확인 (0) | 2020.03.26 |
---|---|
C언어 프로그래밍 예제 : 소수판별기 (0) | 2019.03.07 |
C언어 프로그래밍 예제 : 비밀번호 받아서 *로 출력하기 (0) | 2019.02.28 |
C언어 프로그래밍 예제 : 받은 문자 거꾸로 출력하기/ 받은 문자열 역순으로 출력하기 (0) | 2019.02.28 |
C언어 프로그래밍 예제 : 숫자 계산기 (0) | 2019.02.28 |