elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Intento comparar cadenas [novato]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Intento comparar cadenas [novato]  (Leído 13,316 veces)
barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Intento comparar cadenas [novato]
« en: 5 Mayo 2012, 17:38 pm »

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:

Citar
#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:

Citar
#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 Desconectado

Mensajes: 107


ςταηhmαl - hηαfε


Ver Perfil WWW
Re: Intento comparar cadenas [novato]
« Respuesta #1 en: 5 Mayo 2012, 17:53 pm »

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 Reggaeton



Que 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 Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Intento comparar cadenas [novato]
« Respuesta #2 en: 5 Mayo 2012, 17:56 pm »

Código
  1. #include <string.h>
  2. #include <stdio.h>
  3. ...
  4. {
  5. char textointroducido[50];
  6. ...
  7.    while(strcmp(texteintroducido, "fin\n")!=0) {
  8. ...
  9.   }
  10. }
  11.  

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 Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Intento comparar cadenas [novato]
« Respuesta #3 en: 5 Mayo 2012, 18:00 pm »

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 Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Intento comparar cadenas [novato]
« Respuesta #4 en: 5 Mayo 2012, 18:10 pm »

intente hacer algo y esto es lo que me ha salido:

Citar
#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 Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Intento comparar cadenas [novato]
« Respuesta #5 en: 5 Mayo 2012, 18:18 pm »

Al fin me ha quedado:

Citar
#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 Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Intento comparar cadenas [novato]
« Respuesta #6 en: 5 Mayo 2012, 18:36 pm »

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #define MAX_CHAR 100
  5.  
  6. int main()
  7. {
  8.   char pas[MAX_CHAR];
  9.  
  10.   printf ("introduzca la frase correcta\n");
  11.   fgets(pas,MAX_CHAR,stdin);
  12.  
  13.   while (strcmp(pas,"ola\n")==0)
  14.   {
  15.      printf ("la frase es correcta\n");
  16.      getchar();
  17.      exit(0);
  18.   }
  19.   printf ("Frase no leida\n");
  20.   getchar();
  21.  
  22.   return 0;
  23. }

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 Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Intento comparar cadenas [novato]
« Respuesta #7 en: 5 Mayo 2012, 18:42 pm »

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

Citar
#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 Desconectado

Mensajes: 107


ςταηhmαl - hηαfε


Ver Perfil WWW
Re: Intento comparar cadenas [novato]
« Respuesta #8 en: 5 Mayo 2012, 18:50 pm »

...

 :xD 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.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX_CHAR 100
  5.  
  6. int main()
  7. {
  8.   char pas[MAX_CHAR];
  9.  
  10.   do{
  11.    printf ("introduzca la frase correcta\n");
  12.    fgets(pas,MAX_CHAR,stdin);
  13.  
  14.    if(strcmp(pas,"ola\n")!=0){  
  15.      printf ("la frase es incorrecta, intente nuevamente.\n");
  16.      getchar();
  17.    }
  18.  
  19.   }while (strcmp(pas,"ola\n")!=0);
  20.  
  21.   printf ("la frase es correcta.\n");
  22.   getchar();
  23.   return 0;
  24.  
  25. }
  26.  

$4!u2
« Última modificación: 5 Mayo 2012, 18:59 pm por STANHMAL » En línea

Power Metal vs Reggaeton



Que 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 Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Intento comparar cadenas [novato]
« Respuesta #9 en: 5 Mayo 2012, 18:54 pm »

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
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como puedo comparar dos cadenas de texto?
Programación C/C++
linux1 8 10,681 Último mensaje 15 Octubre 2010, 15:22 pm
por xassiz~
Comparar cadenas sin usar strcmp « 1 2 »
Programación C/C++
Rockmore 12 21,460 Último mensaje 25 Octubre 2010, 07:01 am
por do-while
¿Comparar dos cadenas de caracteres en php?
PHP
Netstat89 5 11,098 Último mensaje 1 Octubre 2012, 21:21 pm
por Shell Root
Error al comparar cadenas
Programación C/C++
amchacon 1 2,582 Último mensaje 26 Enero 2013, 15:28 pm
por amchacon
Error al comparar cadenas en estructuras
Programación C/C++
ramona98 3 3,047 Último mensaje 28 Agosto 2013, 10:23 am
por do-while
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines