Foros del Web » Programación para mayores de 30 ;) » Programación General »

Función propia para comparar cadenas en C

Estas en el tema de Función propia para comparar cadenas en C en el foro de Programación General en Foros del Web. Hola, buenas tardes queridos programadores, quería preguntarles ya que tengo una duda. Incialmente sería. Declarar dos char, con un máximo de 10 letras cada uno, ...
  #1 (permalink)  
Antiguo 11/05/2011, 15:24
 
Fecha de Ingreso: febrero-2011
Mensajes: 55
Antigüedad: 13 años, 10 meses
Puntos: 3
Función propia para comparar cadenas en C

Hola, buenas tardes queridos programadores, quería preguntarles ya que tengo una duda.
Incialmente sería.
Declarar dos char, con un máximo de 10 letras cada uno, y no usar la función de string comparate, sino, crear la mía.
Sería algo más o menos así:

Código:
char a[10], b[10];

    printf("Ingrese el nombre de A:");
    scanf("%s",a);

    printf("Ingrese el nombre de B:");
    scanf("%s",b);

    equals(a,b);//nombre de la función de tipo void.

    return 0;
y la función sería asi:

Código:
void equals(char a, char b)
{

int i,z=0;

for(i=1;i<10;i++)
{
if (a[i]==b[i])
z+=0;
else
z+=1;
}

if (z>0)
printf("Son desiguales");
else
printf("Son desiguales");
Yo pensaba manejar los char como si fueran arrays comparando a[1] con b[1] y así con cada letra de cada palabra, si eran iguales sumaba 0 a Z y sino 1, y dsps la comprobación final es que si z es mayor que 0, ya significa que no son iguales y mostrar el resultado.
Y no me funciona porque como que me dice que los char, no son punteros por así decirlos, porque también probe printf("%s",a[2]); y no me mostró nada.
Agradecería mucho su ayuda.
Saludos !.
  #2 (permalink)  
Antiguo 12/05/2011, 03:43
 
Fecha de Ingreso: abril-2011
Ubicación: Distrito Federal
Mensajes: 112
Antigüedad: 13 años, 7 meses
Puntos: 17
Respuesta: Función propia para comparar cadenas en C

void equals(char *a, char *b)

Tienes un error en el for ya que el contador debe empezar en 0 y llegar hasta el 9.

Otro comentarios: el z+=0 esta por demás, con manejar un != en la comparación queda mas corto.

Otra cosa: la convención de C es que las cadenas terminan en un nulo, lo que hay más allá no importa y se considera que tiene basura. Si no consideras eso casi siempre va a salir desigual tu comparación. Si en cualquiera de las dos cadenas llega un nulo la comparación termina.

Y una mas: Con encontrar una sola desigualdad se puede dar por terminada la comparación, no hay porqué seguir contando.

Bueno, una mas: dentro de equals haces un ciclo de 10, pero si consideras que la terminación de una cadena es un nulo, tu algoritmo quedaría perfecto para cualquier cantidad de caracteres.

Suerte!
  #3 (permalink)  
Antiguo 12/05/2011, 11:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 55
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Función propia para comparar cadenas en C

Cita:
Iniciado por jevangelista Ver Mensaje
void equals(char *a, char *b)

Tienes un error en el for ya que el contador debe empezar en 0 y llegar hasta el 9.

Otro comentarios: el z+=0 esta por demás, con manejar un != en la comparación queda mas corto.

Otra cosa: la convención de C es que las cadenas terminan en un nulo, lo que hay más allá no importa y se considera que tiene basura. Si no consideras eso casi siempre va a salir desigual tu comparación. Si en cualquiera de las dos cadenas llega un nulo la comparación termina.

Y una mas: Con encontrar una sola desigualdad se puede dar por terminada la comparación, no hay porqué seguir contando.

Bueno, una mas: dentro de equals haces un ciclo de 10, pero si consideras que la terminación de una cadena es un nulo, tu algoritmo quedaría perfecto para cualquier cantidad de caracteres.

Suerte!
Muchas gracias, hay solucione y ya funciona, pero como me comentas vos, el tema es que no se si existe una función que yo ponga for(i=0;i<a.length;i++)
entonces como puedo hacer que esa función se aplique a cualquier cantidad de caracteres ?.Osea, como quedaría el for ?.
Desde ya, muchas gracias en serio, entendí todo lo que me dijiste.
  #4 (permalink)  
Antiguo 12/05/2011, 13:52
 
Fecha de Ingreso: febrero-2011
Mensajes: 55
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Función propia para comparar cadenas en C

Ya me salio, lo pude hacer, muchas gracias, tu ayuda fue clave !.
Estoy feliz :) jaja.
Gracias en serio !.
  #5 (permalink)  
Antiguo 13/05/2011, 15:05
 
Fecha de Ingreso: abril-2011
Ubicación: Distrito Federal
Mensajes: 112
Antigüedad: 13 años, 7 meses
Puntos: 17
Respuesta: Función propia para comparar cadenas en C

De nada, de nada, que bueno que te salió!.

Suerte!

Etiquetas: cadenas, propia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.