c언어 입문자. 간단한 계산기에서 액세스 위반

조회수 606회

간단한 계산기를 만들어봤는데 액세스 위반이 뜨더라구요. 어디서 잘못됐는지 알고 싶습니다.

#include <stdio.h>

int main(void)
{
    int num1=0, num2=0, result=0;
    char oper;

    start:

    scanf_s ("%d %c %d", & num1, & oper, & num2);  //여기서 엑세스 위반 

    if (oper == '+')
    {
        result = num1 + num2;
        printf("%d %c %d = %d", num1, oper, num2, result);
    }

    else if (oper == '-')
    {
        result = num1 - num2;
        printf("%d %c %d = %d", num1, oper, num2, result);
    }

    else if (oper == '/')
    {
        result = num1 / num2;
        printf("%d %c %d = %d", num1, oper, num2, result);
    }

    else (oper == '*');
    {
        result = num1 * num2;
        printf("%d %c %d = %d", num1, oper, num2, result);
    }
    goto start;


}

1 답변

  • scanf_s 함수는 scanf 함수와 사용법이 조금 다릅니다. 문자나 문자열을 입력 받을 경우 입력 받는 공간의 크기를 알려줘야 합니다.

    아래 코드 참고하세요.

    • 코드
    #include<stdio.h>
    
    int main(void) {
        int num1 = 0, num2 = 0, result = 0; char oper;
    
    start:
    
        scanf_s("%d %c %d", &num1, &oper, 1, &num2);
    
        if (oper == '+')
        {
            result = num1 + num2;
            printf("%d %c %d = %d\n", num1, oper, num2, result);
        }
        else if (oper == '-')
        {
            result = num1 - num2;
            printf("%d %c %d = %d\n", num1, oper, num2, result);
        }
        else if (oper == '/')
        {
            result = num1 / num2;
            printf("%d %c %d = %d\n", num1, oper, num2, result);
        }
        else if (oper == '*')
        {
            result = num1 * num2;
            printf("%d %c %d = %d\n", num1, oper, num2, result);
        }
    
        goto start;
    
        return 0;
    }
    
    • 결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)