Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: masterkeyes en 16 Agosto 2015, 23:08 pm



Título: ay forma de comparar 2 cadenas sin strcmp
Publicado por: masterkeyes en 16 Agosto 2015, 23:08 pm
me gsutaria saber de q forma de comparar 2 cadenas sin utilizar strcmp


Título: Re: ay forma de comparar 2 cadenas sin strcmp
Publicado por: ivancea96 en 17 Agosto 2015, 00:18 am
Puedes recorrerlas caracter a caracter. Cuando un par de caracteres sean diferentes, es que las cadenas son diferentes.
Si una cadena es más larga que otra, es que son diferentes.
Si llegas al final y todos los caracteres coincidieron, es que son iguales.


Título: Re: ay forma de comparar 2 cadenas sin strcmp
Publicado por: Nachillo en 17 Agosto 2015, 02:04 am
Pues intente hacer esto, es muy primitivo, Debe tener algunos fallos, pero bueno es sin utilizar strcmp de la libreria string.h

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define N 10
  5.  
  6. int main(){
  7. char cadena1[N];
  8. char cadena2[N];
  9. char aux='\n';
  10. int i=0,j=0,k=0,l=0;
  11.  
  12. printf("Escribe algo: ");
  13. fflush(stdin);
  14. scanf("%s",&cadena1);
  15. printf("Escribe otra cosa: ");
  16. fflush(stdin);
  17. scanf("%s", &cadena2);
  18.  
  19. for(i=0; i<N && aux != '\0'; i++){
  20. if(cadena1[i] == cadena2[i]){
  21. k++;
  22. }
  23. else{
  24. l++;
  25. }
  26. aux=cadena1[i];
  27.  
  28. }
  29.  
  30. if(l == 0){
  31. printf("Son iguales.\n");
  32. }
  33. else{
  34. printf("NO son iguales");
  35. }
  36.  
  37. system("pause");
  38. return 0;
  39. }
  40.  
  41.  


Título: Re: ay forma de comparar 2 cadenas sin strcmp
Publicado por: ivancea96 en 17 Agosto 2015, 02:54 am
El problema ahí es que si cadena2 es más larga que cadena1, y puede fallar.

Por ejemplo:

cadena1 = "abcde\0"
cadena2 = "abcdefgh"

2 datos más:

No necesitas "aux", puedes poner cadena!='\0'. No importa si lo haces por legibilidad o lo que sea, solo es una curiosidad.

Después del "l++" deberías poner un "break;" para salir del bucle. Así no sigues dando vueltas innecesarias.

Te animo a que hagas una función de ese código.


Título: Re: ay forma de comparar 2 cadenas sin strcmp
Publicado por: patilanz en 17 Agosto 2015, 10:42 am
A veces hago esto:

Código
  1. #include <string>
  2. if(string(cadena) == string(cadena2))

Un saludo xD


Título: Re: ay forma de comparar 2 cadenas sin strcmp
Publicado por: ivancea96 en 17 Agosto 2015, 15:30 pm
A veces hago esto:

Código
  1. #include <string>
  2. if(string(cadena) == string(cadena2))

Un saludo xD

Ten en cuenta que eso es C++.