[C] ¿Pregunta "If y Char"?

Iniciado por electrodev, 22 Marzo 2012, 18:10 PM

0 Miembros y 1 Visitante están viendo este tema.

electrodev

Hola gente, bueno estoy aprendiendo a programar en c, y me a surgido una pregunta.Bueno espero que me puedan ayudar.

El code:

#include <stdio.h>
#include <stdlib.h>

int main(void){ 
char opt[10];

  printf ("\n");
  printf ("Mi programa>");
  scanf ("%s",&opt);

if ((%s,opt) == "gen");
        {
         goto gen }
         { else
          printf("Comando invalido");
}

  goto exit;
  return(0);
 
  exit:
    system("cls");
    printf("\n");
    printf("Adios");
    system("pause >nul");

  gen:
   system("cls");
    printf("\n");
    printf("As elegido la opcion Gen");
    system("pause >nul")
   
}


La cosa es que no me funciona el If.
Por Favor, Ayudaaa!!!

nirvguy

#1
Eduardo97 los ifs no se terminan con ";" porque no es una instrucción es un bloque de código (solo va con "{" y "}").
y cuando haces:

if ((%s,opt) == "gen")

"(%s,opt)" no se a qué te referias, pero no se puede ese tipo de cosas. El %s es un parametro de scanf donde le indicas que lea del teclado una cadena y no cualquier otra cosa.
En todo caso si quieres preguntar si la cadena opt == la cadena "gen" no puedes, porque las cadenas de texto no se pueden igualar así como así. Utiliza strcmp que justamente realiza eso, compara cadenas de texto. Asi (incluyendo string.h):

if ((strcmp(opt,"gen") == 0) {
   goto gen;
}
....

Tambien, en esta parte

...
goto exit;
return(0);
...

nunca se va ejecutar return(0), porque salta directamente a exit. Igual, para ver como son está bien, pero no es muy buena practica usar gotos ni tampoco system. Pero no hay problema si estás empezando. Te dejo el codigo completo arreglado:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main(void){  
char opt[10];

 printf ("\n");
 printf ("Mi programa>");
 scanf ("%s",opt);
 fflush(stdin);

 if ((strcmp(opt,"gen"))==0)
 {
     goto gen;
 }
 else
 {
      printf("Comando invalido");
 }

 exit:
   system("cls");
   printf("\n");
   printf("Adios");
   system("pause > null");
   return 0;

 gen:
  system("cls");
   printf("\n");
   printf("As elegido la opcion Gen");
   goto exit;
 
}

Te lo corregí un poco.
Espero haberte ayudado.
Todas mis letras han sido pedazos de poesía y los pedazos de poesía se toman de poemas que comúnmente no tienen sentido
en primer termino.
               Kurt Cobain

satu

Hola

Para leer cadenas no se pone & en el scanf:

scanf ("%s", opt);


Te vendrá bien leerte esto

nirvguy te has confundido. Recuerda que strcmp devuelve 0 cuando las 2 cadenas comparadas son iguales, por lo que debería ser:

if (strcmp(opt,"gen") == 0) {
....
}


Saludos
Breakbeat como forma de vida

nirvguy

Jeje, lo siento, se me pasó por alto, ahora lo edito.
Todas mis letras han sido pedazos de poesía y los pedazos de poesía se toman de poemas que comúnmente no tienen sentido
en primer termino.
               Kurt Cobain

electrodev

Gracias chicos, me a sido de gran ayuda