LINUX.ORG.RU

проблемка со scanf


0

1

пытаюсь написать калькулятор (только начинаю изучение)

#include <stdio.h>
main ()
{
int a,b,c;
char d;
printf(«Vvedite pervoye slagayemoye: »);
scanf(«%d»,&a);
printf(«Vvedite vtoroye slagayemoye: »);
scanf(«%d»,&b);
printf(«chto delat? »);
scanf(«%1s»,&d);
switch (d){
case '+': c=a+b;
break;
case '-': c=a-b;
break;
case '*': c=a*b;
break;
case '/': c=a/b;
break;
}
printf(«rezultat: %d %c %d = %d»,a,d,b,c);
getchar();
}

непонятно почему после выполнения 3-го scanf переменная b сбрасывается на 0
вот мой пример

Vvedite pervoye slagayemoye: 12
Vvedite vtoroye slagayemoye: 5
chto delat? *
rezultat: 12 * 0 = 0

И еще getchar надо добавить перед этим, чтобы символ окончания строки от предыдущего ввода не считался введенным символом.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

А вообще, scanf - нехорошая функция.

а что использовать вместо этого ?
я только начал изучать,поэтому глобальных знаний не имеется.

alikhantara ()
Ответ на: комментарий от alikhantara

во-первых: освоить теги.

во-вторых %1s проичитает у тебя 1 байтик и запишет его по адресу d. а по адресу d+1 (который скорее всего совпадает с b, ибо оба в стеке) запишет конец строки, он же \0, он же 0.

nanoo_linux ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.