Autor
|
Tema: Intento comparar cadenas [novato] (Leído 13,277 veces)
|
barnix456
Desconectado
Mensajes: 128
El soft es como el sexo, cuando es Libre es mejor
|
Hola a todos, me han dejado algunos ejercicios en #C y he resolvido la mayoría, pero me atore en este, creo que trata sobre comparar cadenas, me pide que use un ciclo WHILE de cierta forma que si se escribe la frase "abrete sesamo" el programa se cierra, pero si no el programa sigue pidiendo la frase para que se cumpla el ciclo y se cierre, y pues la verdad no se como comparar "LETRAS". Rápidamente a mi se me ha ocurrido algo asi: #include <stdio.h> int main() { char a; printf ("Escribe la contraseña correcta \n"); scanf ("%c", &a); b: while (a=="abrete sesamo\n"); { exit(0); } goto b; return 0; }
Pero no lleva nada de logica, Aunque se me ha ocurrido otra idea, hace unos dias hace unos dias, a qui mismo en el foro hice una pregunta sobre como hacer para poner una contraseña a un programa, osea que no se tipea la contraseña correcta no abre las opciones del programa y si, el usuario "EXEL" me resolvio la duda de esta manera: #include <stdio.h> #include <string.h> #define MAX_CHAR 100 int main () { char pass[MAX_CHAR]; printf("Introduzca password: \n"); fgets(pass,MAX_CHAR,stdin); if(strcmp(pass,"batman es mi vecino")==0) { printf ("Contraseña verdadera\n"); } else { printf ("La contraseña es incorrecta\n"); } return 0; }
pero la verdad no entendi muy bien eso de "strcmp", pueden orientarme si puedo usar este miismo metodo, para mi duda y agregarla al ciclo WHILE. GRACIAS
|
|
|
En línea
|
"No temo a los ordenadores; lo que temo es quedarme sin ellos"
Isaac Asimov
|
|
|
STANHMAL
Desconectado
Mensajes: 107
ςταηhmαl - hηαfε
|
Hola que tal,
bien strcmp lo que hace es una comparación de cadenas, y funciona enviando las 2 cadenas que necesitas comparar, de la siguiente forma :
strcmp( Cadena1, Cadena2 ), y esta te retorna un número, si retorna 0 quiere decir que las 2 cadenas son iguales, y si te retorna un número diferente de 0, es porque son diferentes.
Lo que tu estas haciendo esta mal, ya que creaste una variable de tipo carácter que solo puede almacenar un carácter, para almacenar más de un carácter, necesitas crear un vector, tal y como lo hizo EXEL, esto que hizo es que la variable que se crea pueda almacenar tantos caracteres como le hallas pedido dentro de [ ], es decir,
char pass[100];
pass, puede almacenar hasta un total de 100 caracteres, mientras que si la dejas:
char pass;
pass, puede almacenar un único carácter.
$4!u2
|
|
|
En línea
|
Power Metal vs ReggaetonQue es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red
|
|
|
Slava_TZD
Wiki
Desconectado
Mensajes: 1.466
♪ [8675309] ♪
|
#include <string.h> #include <stdio.h> ... { char textointroducido[50]; ... while(strcmp(texteintroducido , "fin\n")!=0) { ... } }
Si estás interesado mira acá, hay ejemplos en los que se crea una función específica para lo que tu pides.
|
|
« Última modificación: 5 Mayo 2012, 18:04 pm por Tzhed // Kyperf »
|
En línea
|
The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
|
|
|
barnix456
Desconectado
Mensajes: 128
El soft es como el sexo, cuando es Libre es mejor
|
Hay ok, de esa forma es en la que funciona strcmp realmente no lo sabia, entonces tengo que usar eso, dentro del ciclo, intentare aserlo, y en un rato posteo lo que llevo, igual como estoy empezando me atoro mucho en C, gracias STANHMAL, se agradece... XD
|
|
|
En línea
|
"No temo a los ordenadores; lo que temo es quedarme sin ellos"
Isaac Asimov
|
|
|
barnix456
Desconectado
Mensajes: 128
El soft es como el sexo, cuando es Libre es mejor
|
intente hacer algo y esto es lo que me ha salido: #include <stdio.h> #include <string.h> #define MAX_CHAR 100
int main() { char pas[MAX_CHAR]; printf ("introduzca la frase correcta\n"); fgets(pas,MAX_CHAR,stdin); while (strcmp(pas,"abrete sesamo")==0) { printf ("la frase es correcta\n"); getchar(); exit(0); } printf ("Frase no leida\n"); getchar(); return 0; }
pero me marca error el exit dice lo siguiente: ejer3.c:16:3: aviso: declaración implícita de la función ‘exit’ [-Wimplicit-function-declaration] que estoy haciendo mal??
|
|
|
En línea
|
"No temo a los ordenadores; lo que temo es quedarme sin ellos"
Isaac Asimov
|
|
|
barnix456
Desconectado
Mensajes: 128
El soft es como el sexo, cuando es Libre es mejor
|
Al fin me ha quedado: #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_CHAR 100
int main() { char pas[MAX_CHAR]; printf ("introduzca la frase correcta\n"); fgets(pas,MAX_CHAR,stdin); while (strcmp(pas,"ola\n")==0) { printf ("la frase es correcta\n"); getchar(); exit(0); } printf ("Frase no leida\n"); getchar(); return 0; }
me hacia falta agregar: #include <stdlib.h> Gracias, me ha servido de mucho su ayuda!!
|
|
|
En línea
|
"No temo a los ordenadores; lo que temo es quedarme sin ellos"
Isaac Asimov
|
|
|
Slava_TZD
Wiki
Desconectado
Mensajes: 1.466
♪ [8675309] ♪
|
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_CHAR 100 int main() { char pas[MAX_CHAR]; printf ("introduzca la frase correcta\n"); fgets(pas ,MAX_CHAR ,stdin ); while (strcmp(pas ,"ola\n")==0) { printf ("la frase es correcta\n"); } return 0; }
El while ahí no tiene sentido, si lo quieres hacer así lo que va ahí es un if. En tu primer mensaje decías que el programa debia seguir pidiendo frases, hasta que la frase fuese la correcta, el tuyo no hace eso.
|
|
|
En línea
|
The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
|
|
|
barnix456
Desconectado
Mensajes: 128
El soft es como el sexo, cuando es Libre es mejor
|
Ha si tienes razon, mira este si lo hace, creo, observalo y me comentas, ah y el while por que afuerzas quieren que use eso, por que bien solo seria un if-else, pero bueno #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_CHAR 100
int main() { char pas[MAX_CHAR]; a: printf ("introduzca la frase correcta\n"); fgets(pas,MAX_CHAR,stdin); while (strcmp(pas,"ola\n")==0) { printf ("la frase es correcta\n"); getchar(); exit(0); } printf ("Frase no leida\n"); getchar(); goto a; return 0; }
|
|
|
En línea
|
"No temo a los ordenadores; lo que temo es quedarme sin ellos"
Isaac Asimov
|
|
|
STANHMAL
Desconectado
Mensajes: 107
ςταηhmαl - hηαfε
|
...
olvida el goto, es mala practica de programación, de momento no se hace visible que es malo, puesto que son cosas sencillas, pero cuando son códigos realmente largos, se vuelve realmente molesto. Mira esta otra forma. #include <stdio.h> #include <string.h> #define MAX_CHAR 100 int main() { char pas[MAX_CHAR]; do{ printf ("introduzca la frase correcta\n"); fgets(pas ,MAX_CHAR ,stdin ); printf ("la frase es incorrecta, intente nuevamente.\n"); } }while (strcmp(pas ,"ola\n")!=0); printf ("la frase es correcta.\n"); return 0; }
$4!u2
|
|
« Última modificación: 5 Mayo 2012, 18:59 pm por STANHMAL »
|
En línea
|
Power Metal vs ReggaetonQue es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red
|
|
|
barnix456
Desconectado
Mensajes: 128
El soft es como el sexo, cuando es Libre es mejor
|
wuao!, se ve un poco raro a primera vista, pero analizandolo bien, se ve mas formal por asi decirlo, solo tengo una duda por que el: do { edito: tambien esta mal, por que escribo la frase correcta "ola" y dice: frase incorrecta, y lo que deberia decir es que esta bien y salir, aparte el programa nunca se cierra, son siemples errores, intentare analizar ese nuevo modelo, eso es nuevo para mi...
|
|
« Última modificación: 5 Mayo 2012, 18:57 pm por barnix456 »
|
En línea
|
"No temo a los ordenadores; lo que temo es quedarme sin ellos"
Isaac Asimov
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como puedo comparar dos cadenas de texto?
Programación C/C++
|
linux1
|
8
|
10,657
|
15 Octubre 2010, 15:22 pm
por xassiz~
|
|
|
Comparar cadenas sin usar strcmp
« 1 2 »
Programación C/C++
|
Rockmore
|
12
|
21,402
|
25 Octubre 2010, 07:01 am
por do-while
|
|
|
¿Comparar dos cadenas de caracteres en php?
PHP
|
Netstat89
|
5
|
11,092
|
1 Octubre 2012, 21:21 pm
por Shell Root
|
|
|
Error al comparar cadenas
Programación C/C++
|
amchacon
|
1
|
2,573
|
26 Enero 2013, 15:28 pm
por amchacon
|
|
|
Error al comparar cadenas en estructuras
Programación C/C++
|
ramona98
|
3
|
3,036
|
28 Agosto 2013, 10:23 am
por do-while
|
|