Variable loses value in C

Asked

Viewed 474 times

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?

1 answer

4


First thing I noticed:

"Erro! Insira um preco: " needs 24 bytes ... but yours mensagem only room for 20.

  • 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.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.