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)
| | |-+  como puedo comparar dos cadenas de texto?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como puedo comparar dos cadenas de texto?  (Leído 10,723 veces)
linux1

Desconectado Desconectado

Mensajes: 138



Ver Perfil
como puedo comparar dos cadenas de texto?
« en: 15 Octubre 2010, 06:06 am »

hola lo que pasa es que quiero poder comparar dos cadenas de texto "char" por medio de un if-else


por ejemplo yo tengo estos dos valores

aba y abc vemos que son diferentes por el ultimo caracter quisiera saber como puedo comparar estos con la instruccion if y else de c  :)


En línea



Lunfardo


Desconectado Desconectado

Mensajes: 568


Ver Perfil
Re: como puedo comparar dos cadenas de texto?
« Respuesta #1 en: 15 Octubre 2010, 07:20 am »

si es como yo entendi:


anda comporadan caracter a caracter( osea el primero con el primero, el segundo con el segundo,etc) mientras sea verdadero que siga avanzando, y si es falso que informe  lo que vos quieras,


bye =)


En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: como puedo comparar dos cadenas de texto?
« Respuesta #2 en: 15 Octubre 2010, 09:44 am »

La cuestión es:

A) Si quieres que te diga la primera diferencia:
compara carácter a carácter hasta que encuentres una difernecia, sino, devuelve algún mensaje como que son iguales. Si encuentras la diferencia, devuelve algo como que son diferentes y para el bucle.

B) Si quieres que te las diga todas:
compara carácter a carácter mientras no llegues a la longitud de las cadenas, y en cada diferencia, di en que posición está.

Nótese que no he incluido ninguna medida de control de longitudes y demás, eso ya es tema a parte.
En línea

darkvidhack

Desconectado Desconectado

Mensajes: 159


Be Linux my friend...


Ver Perfil WWW
Re: como puedo comparar dos cadenas de texto?
« Respuesta #3 en: 15 Octubre 2010, 13:28 pm »

Bueno, lo primero, tu lo que quieres, una cadena de texto, no es "char", sino "string" , veamos:

#include <iostream>
using namespace std;

int main () {

string primera_cadena="abc";
string segunda_cadena="aba";

if (primera_cadena==segunda_cadena)
     cout << "Las dos cadenas son iguales";
else
     cout << "Las cadenas son distintas";

return 0;

}

Espero haberte ayudado ;)
En línea

live and let die

la duda es la base de todo conocimiento
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: como puedo comparar dos cadenas de texto?
« Respuesta #4 en: 15 Octubre 2010, 13:53 pm »

darkvidhack: no necesariamente y menos en C donde no existen.

Con un solo if-else mejor usar strcmp diria yo.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: como puedo comparar dos cadenas de texto?
« Respuesta #5 en: 15 Octubre 2010, 14:43 pm »

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. int main()
  5. {
  6. char cadena_uno[5] = "hola";
  7. char cadena_dos[5] = "hoal";
  8.  
  9. if(strcmp(cadena_uno, cadena_dos)==0)
  10.    printf("Son iguales\n");
  11.  
  12. return 0;
  13. }
  14.  
« Última modificación: 15 Octubre 2010, 15:21 pm por pablomi » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: como puedo comparar dos cadenas de texto?
« Respuesta #6 en: 15 Octubre 2010, 15:04 pm »

pablomi, lee el enlace que deje:

"A zero value indicates that both strings are equal."

La logica o el mensaje del codigo que dejaste esta mal.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: como puedo comparar dos cadenas de texto?
« Respuesta #7 en: 15 Octubre 2010, 15:20 pm »

Yo usaría strncmp

Código
  1. if(!strncmp(cad1,cad2,sizeof cad2))
  2.   std::cout<<"iguales"<<std::endl;
  3. else
  4.   std::cout<<"distintas";

Con sizeof por supuesto siempre que el arreglo sea local, de lo contrario strlen. Igualmente tambien se puede pasar otro valor, uno menor por ejemplo para comparar 2 caracteres.
El ejemplo de cplusplus:

Código
  1. /* strncmp example */
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main ()
  6. {
  7.  char str[][5] = { "R2D2" , "C3PO" , "R2A6" };
  8.  int n;
  9.  puts ("Looking for R2 astromech droids...");
  10.  for (n=0 ; n<3 ; n++)
  11.    if (strncmp (str[n],"R2xx",2) == 0)
  12.    {
  13.      printf ("found %s\n",str[n]);
  14.    }
  15.  return 0;
  16. }

Saludos

PD: linux1, hay muchos post sobre este tema, utiliza el buscador!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: como puedo comparar dos cadenas de texto?
« Respuesta #8 en: 15 Octubre 2010, 15:22 pm »

pablomi, lee el enlace que deje:

"A zero value indicates that both strings are equal."

La logica o el mensaje del codigo que dejaste esta mal.
Perdón, ya sabía su uso, se me pasó lo del mensaje "diferentes" por "iguales" :xD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines