ay forma de comparar 2 cadenas sin strcmp

Iniciado por masterkeyes, 16 Agosto 2015, 23:08 PM

0 Miembros y 1 Visitante están viendo este tema.

masterkeyes

me gsutaria saber de q forma de comparar 2 cadenas sin utilizar strcmp

ivancea96

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.

Nachillo

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;
}


ivancea96

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.

patilanz

A veces hago esto:

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


Un saludo xD

ivancea96

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++.