Foro de elhacker.net

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:
Código:
#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:
Código
  1. if ((%s,opt) == "gen")
  2.  
"(%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):
Código
  1. if ((strcmp(opt,"gen") == 0) {
  2.    goto gen;
  3. }
  4. ....
  5.  
Tambien, en esta parte
Código
  1. ...
  2. goto exit;
  3. return(0);
  4. ...
  5.  
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:
Código
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main(void){  
  6. char opt[10];
  7.  
  8.  printf ("\n");
  9.  printf ("Mi programa>");
  10.  scanf ("%s",opt);
  11.  fflush(stdin);
  12.  
  13.  if ((strcmp(opt,"gen"))==0)
  14.  {
  15.      goto gen;
  16.  }
  17.  else
  18.  {
  19.       printf("Comando invalido");
  20.  }
  21.  
  22.  exit:
  23.    system("cls");
  24.    printf("\n");
  25.    printf("Adios");
  26.    system("pause > null");
  27.    return 0;
  28.  
  29.  gen:
  30.   system("cls");
  31.    printf("\n");
  32.    printf("As elegido la opcion Gen");
  33.    goto exit;
  34.  
  35. }
  36.  
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:
Código
  1. scanf ("%s", opt);
  2.  

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:
Código
  1. if (strcmp(opt,"gen") == 0) {
  2. ....
  3. }
  4.  

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