Test Foro de elhacker.net SMF 2.1

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



#include <stdio.h>
#include <stdlib.h>
#define N 10

int main(){
char cadena1[N];
char cadena2[N];
char aux='\n';
int i=0,j=0,k=0,l=0;

printf("Escribe algo: ");
fflush(stdin);
scanf("%s",&cadena1);
printf("Escribe otra cosa: ");
fflush(stdin);
scanf("%s", &cadena2);

for(i=0; i<N && aux != '\0'; i++){
if(cadena1[i] == cadena2[i]){
k++;
}
else{
l++;
}
aux=cadena1[i];

}

if(l == 0){
printf("Son iguales.\n");
}
else{
printf("NO son iguales");
}

system("pause");
return 0;
}

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 (cpp) [Seleccionar]
#include <string>
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
Cita de: patilanz en 17 Agosto 2015, 10:42 AM
A veces hago esto:

Código (cpp) [Seleccionar]
#include <string>
if(string(cadena) == string(cadena2))


Un saludo xD

Ten en cuenta que eso es C++.