TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: andres1308 en 23 de Mayo de 2013, 22:21:37

Título: comparar dos array
Publicado por: andres1308 en 23 de Mayo de 2013, 22:21:37
Buen dia
estoy tratando de comparar dos arreglos char de 11 posiciones
uso la funcion strcmp pero siempre me da el mismo resultado
quisiera saber si alguien me podria ayudar, o si conoce otra forma de hacerlo
Gracias
Título: Re: comparar dos array
Publicado por: jukinch en 23 de Mayo de 2013, 23:00:03
Y cual es el código?
Título: Re: comparar dos array
Publicado por: KALLITOS en 23 de Mayo de 2013, 23:45:48

Código: C
  1. unsigned char compara(char *text1,char *text2)
  2. {
  3. unsigned char cont;
  4. for(cont = 0; cont < 11;cont++)if(text1[cont] != text2[cont]) return 0;
  5. return 1;
  6. }//
Título: Re: comparar dos array
Publicado por: jukinch en 24 de Mayo de 2013, 01:11:48
Kallitos:
         si no ponés todo el código no podremos ayudarte.
te pongo un ejemplo con la función y con strcmp.

Código: C
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5. int compara_cadenas(char *ptr1,char *ptr2);
  6.  
  7.  
  8. int main()
  9. {
  10.    char texto1[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  11.    char texto2[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  12.    
  13.    printf( "texto1=%s\n", texto1 );
  14.    printf( "texto2=%s\n", texto2 );
  15.    printf( "comparamos cadenas. Resultado: %d\n", compara_cadenas( texto1, texto2) );
  16.  
  17.  ;
  18.    
  19.    if( !strcmp( texto1, texto2))  printf( "cadenas iguales\n" ); // si las cadenas son iguales retorna 0
  20.    else printf( "cadenas distintas\n" );
  21.    
  22.  
  23.    system("pause");
  24.     return 0;
  25.  
  26.  
  27. }
  28.  
  29. int compara_cadenas(char *ptr1,char *ptr2)
  30.   {
  31.         unsigned char cont;
  32.         for(cont = 0; cont < 11;cont++)
  33.      {
  34.       printf( "caracter %d de texto1=%c\n", cont, ptr1[cont] );
  35.       printf( "caracter %d de texto2=%c\n", cont, ptr2[cont]);
  36.       if(ptr1[cont] != ptr2[cont]) return 0; // si son distintas retorna 0
  37.      }
  38.         return 1; // si son iguales retorna 1
  39.  
  40.   }
Título: Re: comparar dos array
Publicado por: KALLITOS en 24 de Mayo de 2013, 09:58:59
Estimado jukinch, yo no estoy solicitando la ayuda  :mrgreen:, el codigo que puse fue como ejemplo para que se guie andres1308, ya él lo ajustará a su necesidad.

saludos  :)
Título: Re: comparar dos array
Publicado por: RICHI777 en 24 de Mayo de 2013, 13:05:11
Hola, el strcmp se debe usar unicamente para comparar string C, para comparar arrays o arreglos se debe usar la función memcmp

Código: C
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.    char texto1[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  7.    char texto2[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  8.    
  9.  
  10.    if( !memcmp( texto1, texto2, sizeof( texto1 )))
  11.      printf( "cadenas iguales\n" );
  12.    else
  13.      printf( "cadenas distintas\n" );
  14. }

Saludos !

Título: Re: comparar dos array
Publicado por: jukinch en 24 de Mayo de 2013, 13:21:19
Ok Kallitos perdón por la confusión .
Gracias Richi777 por la corrección
Saludos a ambos
Título: Re: comparar dos array
Publicado por: cguzman en 28 de Mayo de 2013, 18:21:42
hazlo con un bucle

for( x=0; x=numero de caracteres de array ; x++ )
{
if( array1
{
xxxxxxxxxxxxxxxxxxxxxx
}
}
Título: Re: comparar dos array
Publicado por: RICHI777 en 28 de Mayo de 2013, 19:23:57
hazlo con un bucle

for( x=0; x=numero de caracteres de array ; x++ )
{
if( array1
  • == array2
  • )

{
xxxxxxxxxxxxxxxxxxxxxx
}
}

Hola, lo que escribiste funciona pero es mas lento que el memcmp.

Saludos !