none
c 변수 질문

    질문

  • 과제중에 문자를 입력받아서 그걸 숫자로 바꾸는 부분이 있는데

    * 음료수를 선택하세요(A:300, B:400, C:500) : B

    -> 음료수 금액은 400원입니다.

    이부분을  코딩해서

    char t;

    int  A=0, B=0, C=0, c;

    printf("* 음료수를 선택하세요(A:300원, B:400원, C:500원) :");

    scanf_s("%c \n", &t);
    if (t = A) {
    c = 300;
    printf("->감사합니다 투입된 금액은 %d원 입니다.", c);
    }
    if (t = B) {
    c = 400;
    printf("->감사합니다 투입된 금액은 %d원 입니다.", c);
    }
    if (t = C) {
    c = 500;
    printf("->감사합니다 투입된 금액은 %d원 입니다.", c);
    }

    이렇게 만들었습니다. 그런데

    1>c:\users\tadap\desktop\test1\test1\소스.cpp(25): warning C4473: 'scanf_s': 서식 문자열에 대한 인수가 충분하게 전달되지 않았습니다.
    1>c:\users\tadap\desktop\test1\test1\소스.cpp(25): note: 자리 표시자 및 해당 매개 변수에는 variadic 인수가 2개 필요하지만 1개가 제공되었습니다.
    1>c:\users\tadap\desktop\test1\test1\소스.cpp(25): note: 누락된 variadic 인수 2이(가) 서식 문자열 '%c'에 필요합니다.
    1>c:\users\tadap\desktop\test1\test1\소스.cpp(25): note: 이 인수는 버퍼 크기로 사용됩니다.

    이렇게 나오네요... 실행시키면 debug error 라고 나오면서 중간에 튕겨요(앞에 부분은 문제 없는듯 합니다.) 도와주세요

    2018년 4월 14일 토요일 오전 7:11

답변

  • 코드의 여러 부분이 잘못되었는데요.

    1. scanf_s 함수에 %c를 사용하실 때에는 추가로 char 변수의 갯수를 의미하는 1을 넘겨주어야 합니다.

    -> scanf_s("%c \n", &t, 1);

    2. A, B, C 문자 중 하나를 입력받으시려는 목적이라면 "%c \n" 가 아닌 "%c" 를 입력하는게 맞구요.

    -> scanf_s("%c", &t, 1);

    3. 문자 비교가 잘못되었습니다. 작성하신 코드 if (t = A) 는 t 변수에에 A값을 할당하고 t 값이 0이 아니면 if 문으로 진입하는 코드입니다. 다음과 같이 변경해보세요.

    -> if (t == 'A')

    좋은 결과 있으시길..

    • 답변으로 표시됨 tadaP 2018년 4월 21일 토요일 오전 11:28
    2018년 4월 16일 월요일 오전 8:00