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!!!
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.
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
Jeje, lo siento, se me pasó por alto, ahora lo edito.
Gracias chicos, me a sido de gran ayuda