1
The code below has the expected behavior in case the values are informed correctly. But when I report, for example, in the following order: preco
equal to 1, to quantidade
equal to -1 and then the quantidade
equal to 3, the value of the variable preco
becomes 0.
#include <stdio.h>
#include <string.h>
int main() {
float preco = -1, totalAPagar;
int quantidade = -1, jaPediuEntrada = 0;
char mensagem[20];
do {
(jaPediuEntrada == 1) ? strcpy(mensagem, "Erro! ") : strcpy(mensagem, "");
strcat(mensagem, "Insira um preco: ");
printf(mensagem);
scanf("%f", &preco);
jaPediuEntrada = 1;
} while (preco <= 0);
jaPediuEntrada = 0;
do {
(jaPediuEntrada == 1) ? strcpy(mensagem, "Erro! ") : strcpy(mensagem, "");
strcat(mensagem, "Insira uma quantidade: ");
printf(mensagem);
scanf("%d", &quantidade);
jaPediuEntrada = 1;
} while(quantidade <= 0);
/*Debug*/
printf("\nO preco e igual a %.2f.", preco);
printf("\nA quantidade e igual a %d.\n", quantidade);
totalAPagar = preco * quantidade;
printf("O total a pagar e igual a %.2f.", totalAPagar);
return(0);
}
Can anyone explain the reason for this behavior of the program?
That’s right, @pmg. Thanks for the quick reply. I changed the message but forgot to change the size of the char chain. Thank you! The reported problem was therefore a side effect.
– felipe.zkn