How to read String in the best way to use it as a halting condition of a loop?

Asked

Viewed 127 times

-1

I’m trying to ask for input to a string and read it as a halting condition of a loop but I’m not getting it. Logic Error.

#include <stdio.h>
#include <locale.h>
#include <windows.h>
#include <string.h>


double calculoFatorial (double x) {


  //Variáveis
    double i,f = 1;

    //Lógica
    for(i = x; i > 0; i--){
        f = f * i;
    }

    //Retorno
    return (f);
}

int inicializando (void) {

    //Variáveis
    int fatoriando;
    double saida;

    //Código
    printf("\n - Me diga um número e direi seu fatorial: ");
    scanf("%d",&fatoriando);
    saida = calculoFatorial(fatoriando);
    printf(" - O fatorial do número %d é: %.lf",fatoriando,saida);

    //Retorno
    return (0);
}


int main (void){

    //Título 
    SetConsoleTitle("Calculadora de Fatorial");

    //Regionalizando
    printf("O idioma corrente no código é: %s\n",setlocale(LC_ALL,""));

    //Variáveis
    char resposta[1];

    //Lógica
    do{
        inicializando();
        printf("\n\n - Deseja fazer um novo calculo? (S/N): ");
        scanf("%s",resposta);
    }while(resposta[0] = "N");

    return(0);
}
  • There’s no point in you declaring char resposta[1]; because a string in C always adds a terminator character ' 0', so the string that should store a single character must be 2. In your case just declare char resposta; , this is a single character and utliizar scanf(" %c", &resposta); and }while(resposta == 'N');. But if you want to work with strings then use the function strcmp for comparison.

1 answer

2

The comparison with == and != does not compare the contents. Comparing strings should be done with strcmp.

Substitute:

do{
    inicializando();
    printf("\n\n - Deseja fazer um novo calculo? (S/N): ");
    scanf("%s",resposta);
}while(resposta[0] = "N");

for:

do{
    inicializando();
    printf("\n\n - Deseja fazer um novo calculo? (S/N): ");
    scanf("%s",resposta);
}while(strcmp(resposta, "S") == 0);

Browser other questions tagged

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