Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/12/2009, 11:10
Avatar de calathea
calathea
 
Fecha de Ingreso: octubre-2008
Ubicación: Valladolid
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 3
Información Respuesta: Problema con array de caracteres

A ver si consigo explicarte lo que entendido que necesitas saber sobre strcmp:

strcmp se utiliza para comparar cadenas de caracteres (string compare) y tiene la siguiente estructura:

int strcmp(const char *s1, const char *s2);

Esto quiere decir que la funcion strcmp devuelve un número entero en función de los resultados obtenidos en la comparación:
  • 0: las dos cadenas de caracteres pasadas como parámetro (es decir, en los paréntesis - en el ejemplo son s1 y s2- ) son exactamente iguales
    Ejemplo:
    Código c:
    Ver original
    1. char cadena1[20];
    2. char cadena2[20];
    3. int num;
    4.  
    5. strcpy(cadena1, "Soy la cadena 1"); //copio en cadena1 el texto "Soy la cadena 1"
    6. strcpy(cadena2, "Soy la cadena 1"); //copio en cadena2 el texto "Soy la cadena 1"
    7.  
    8. num = strcmp(cadena1, cadena2); //en num se alamacena el resultado devuelto por strcmp
    9.  
    10. if(num == 0) //como hemos alamacenado el mismo texto en cadena1 y en cadena2, entrará en el if (num tendrá almacenado el valor 0)
    11. printf("Son iguales\n");
    12. else
    13. printf("Son distinstas\n");
    14.  
    15. system("Pausa");
  • distinto de 0: las dos cadenas de caracteres son distintas
    Ejemplo (igual que el anterior solo que ahora vamos a meter un texto diferente en cada cadena):
    Código c:
    Ver original
    1. char cadena1[20];
    2. char cadena2[20];
    3. int num;
    4.  
    5. strcpy(cadena1, "Soy la cadena 1"); //copio en cadena1 el texto "Soy la cadena 1"
    6. strcpy(cadena2, "No soy la cadena 1"); //copio en cadena2 el texto "No soy la cadena 1"
    7.  
    8. num = strcmp(cadena1, cadena2); //en num se alamacena el resultado devuelto por strcmp
    9.  
    10. if(num == 0) //como no hemos alamacenado el mismo texto en cadena1 y en cadena2, no entrará en el if (num tendrá almacenado un valor distinto de 0)
    11. printf("Son iguales\n");
    12. else  //entrará entonces en el else
    13. printf("Son distinstas\n");
    14.  
    15. system("Pausa");
    1. < 0: la cadena s1 es menor que la cadena s2
    2. > 0: la cadena s1 es mayor que la cadena s2

Espero que así te haya quedado más claro...porque esque está función no tiene mucho más que explicar...