Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: electrodev en 22 Marzo 2012, 18:10 PM

Título: [C] ¿Pregunta "If y Char"?
Publicado por: electrodev en 22 Marzo 2012, 18:10 PM
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!!!
Título: Re: [C] ¿Pregunta "If y Char"?
Publicado por: nirvguy en 22 Marzo 2012, 18:33 PM
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.
Título: Re: [C] ¿Pregunta "If y Char"?
Publicado por: satu en 22 Marzo 2012, 18:47 PM
Hola

Para leer cadenas no se pone & en el scanf:

scanf ("%s", opt);


Te vendrá bien leerte esto (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)

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
Título: Re: [C] ¿Pregunta "If y Char"?
Publicado por: nirvguy en 22 Marzo 2012, 19:02 PM
Jeje, lo siento, se me pasó por alto, ahora lo edito.
Título: Re: [C] ¿Pregunta "If y Char"?
Publicado por: electrodev en 22 Marzo 2012, 21:48 PM
Gracias chicos, me a sido de gran ayuda