[ Foro de C ]

Fallo con scanf

28-Oct-2020 16:09
Julián Bajerski Toranzo
2 Respuestas

Intento hacer un simple programa de pregunta - respuesta con printf y scanf. El problema es que da igual lo que responde, siempre tomará la primera opcion en cadena, los "if" os dejo el programa a continuación:

#include <stdio.h>

void main () {

char saludo;
char estado;
char hacer;
char trabajo;
char relajar;

printf ("Hello!: ");
scanf ("%c", &saludo);

if (saludo == 'H' || 'h'){
   printf ("\nHow are you?: ");
   fflush (stdin);
   scanf ("%c", &estado);

   if (estado == 'F' || 'f'){
       printf ("\nCool! Let's get started.");
   }
   else if (estado == 'B' || 'b'){
       printf ("\nWe are going to solve it. Let's get started.");
   }

   printf ("\n\nWhat do you want to do first?: ");
   fflush (stdin);
   scanf ("%c", &hacer);

   if (hacer == 'W' || 'w'){
       printf ("\nAlright, do you want to open Virtual Studio or CodeBlocks?: ");
       fflush (stdin);
       scanf ("%c", &trabajo);

       if (trabajo == 'V' || 'v'){
           printf ("\nLet's open Visual Studio.");
       }
       else if (trabajo == 'C' || 'c'){
           printf ("\nLet's open CodeBlocks.");
       }
   }
   else if (hacer == 'C' || 'c'){
       printf ("\nCool, let's chill out. What do you want to open, YouTube or Netflix?: ");
       fflush (stdin);
       scanf ("%c", &relajar);

       if (relajar == 'Y' || 'y'){
           printf ("\nLet's see what's new.");
       }
       else if (relajar == 'N' || 'n'){
           printf ("\nHope you enjoy.");
       }
   }
}
else if (saludo == 'G' || 'g'){
   printf ("\nGoodbye.");
}
getch ();
}


Muchas gracias por el esfuerzo.


28-Oct-2020 19:11
Julián Bajerski Toranzo

Solucionado, al tratarse de una varaible lógica tenía que poner el char también al otro lado del ||

ej:  if (salutation == 'H' || salutation == 'h');


29-Oct-2020 09:41
Nacho Cabanes (+83)

Estas condiciones están mal:

if (trabajo == 'C' || 'c'){

Debería ser

if (trabajo == 'C' || trabajo ==  'c'){






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)