Я думаю, что я правильно поступил со сканфом… но он привел C4477 и разбился

#c #function #calculator #fare

Вопрос:

Я никогда не видел такой ошибки компиляции. И что такое int*? Ошибка говорит, что %d нужен int*, а не просто int, я использовал %d, за которым следует int var… но что мне делать с int*?

 int main()
{
    int hour, min, car;

    printf("-------------------------------------n");
    printf("n주차요금 계산 프로그램n");
    
    printf("n주차 시간을 입력하세요.nn   시간:n");
    scanf("%d",hour);
    
    printf("n   분:n");
    scanf("%d", min);

    printf("n%d시간 %d분n", hour, min);
    printf("n당신의 차종은 무엇입니까?n");
    printf("n 1.경차   2.기타n");
    scanf("%d", car);
 

Комментарии:

1. Как hour выглядит декларация? int hour; ? Затем используйте scanf("%d", amp;hour); .

2. @Sunfare1944 — Где вы узнали, что можете передавать переменную по значению scanf ?

3. Не беспокойтесь о том, что int * сейчас значит. Это просто означает, что вам нужно использовать amp; большинство переменных, которые вы заполняете scanf . Все, кроме струн.

4. C-это передаваемое значение: параметры для scanf копирования и имеют время жизни этой функции. По этой причине нет способа напрямую вернуть параметр; вы должны передать его адрес памяти. С помощью струн вы уже есть.

Ответ №1:

scanf нуждается в указателе в качестве второго аргумента.

 int main()
{
    int hour, min, car;

    printf("-------------------------------------n");
    printf("n주차요금 계산 프로그램n");
    
    printf("n주차 시간을 입력하세요.nn   시간:n");
    scanf("%d",amp;hour);
    
    printf("n   분:n");
    scanf("%d", amp;min);

    printf("n%d시간 %d분n", hour, min);
    printf("n당신의 차종은 무엇입니까?n");
    printf("n 1.경차   2.기타n");
    scanf("%d", amp;car);
}
 

Вы узнаете почему, когда изучите указатели. А пока просто не забудьте поставить этот amp; оператор перед переменной.