C언어 공부하기/C언어 예제

C언어 프로그래밍 예제 : 여러가지 변수 받기시 생기는 문제

HawordFREAKEK 2020. 4. 7. 12:38
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
sdsdsd

가끔씩 이렇게 코드를 짜다보면 rewind(stdin) 같은 처리를 안 해줄시 7번 코드 줄에 값만 넣고 엔터만 쳐도 11번 줄이 넘어가고 바로 14번 줄이 실행될 때가 있습니다.

왜 이러는지 알아봅시다.


이런 오류는 여러가지 변수를 받을 때 자주 나는 문제입니다


왜 이런 오류가 생기느냐면 7번째 줄의 코드 수행중에 만약 7이라는 숫자를 입력하고 엔터를 누른다면 7이 변수 a 자리에 들어가고 엔터가 s 자리에 들어가기 때문에 이런 일이 생기는 것입니다.


그렇기에 만약 이런 오류가 생긴다면

1. getchar()

2. rewind(stdin)

3. " (띄어쓰기)자료형"

4. "%*자료형"


이런 처리를 해주시면 쉽게 오류를 고칠 수 있습니다.


\n 의 입력을 지워주거나 대신 받아준다는 공통점이 있는 처리방식입니다.