Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Función comparar strings en c

Estas en el tema de Función comparar strings en c en el foro de C/C++ en Foros del Web. Buenas a todos: necesito ayuda con pequeño programa/función en c. El caso es que tengo que hacer una función: int string_iguales (char *str1, char *str2) ...
  #1 (permalink)  
Antiguo 01/10/2015, 10:39
 
Fecha de Ingreso: noviembre-2014
Mensajes: 22
Antigüedad: 9 años, 5 meses
Puntos: 0
Función comparar strings en c

Buenas a todos: necesito ayuda con pequeño programa/función en c.
El caso es que tengo que hacer una función: int string_iguales (char *str1, char *str2) que compare si dos strings i, que diga si son iguales o no.

Muchas gracias de antemano, se agradecen todas las contestaciones ;)
  #2 (permalink)  
Antiguo 01/10/2015, 11:32
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Función comparar strings en c

Lo que debes hacer es comparar carácter por carácter ambas cadenas en un bucle do while cuya condiciones sea que alguna de las dos sea diferente o sea el carácter de fin de cadena. Si ambas son iguales llegarás con el carácter de fin de cadena en ambas y si son diferentes no. Hay varias maneras de hacerlo como por ejemplo colocar un condicional dentro del bucle que vaya incrementando un contador de caracteres iguales y al salir comprobar que sea igual al largo de ambas cadenas. O en el condicional restas ambos caracteres y si da 0 sigues, si da un valor negativo retornar -1 y si da un numero mayor que 0 retornar con 1.
  #3 (permalink)  
Antiguo 02/10/2015, 15:22
Avatar de kspr  
Fecha de Ingreso: agosto-2011
Ubicación: Ecuador
Mensajes: 43
Antigüedad: 12 años, 8 meses
Puntos: 7
Respuesta: Función comparar strings en c

Puedes basarte en el algoritmo de strcmp, y sería tal y como te menciona @aguml

http://www.opensource.apple.com/sour...c/gen/strcmp.c
http://sourceforge.net/p/mspgcc/msp4...tring/strcmp.c

por un ejemplo:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3.  
  4. void str_equals (const char *str1, const char *str2) {
  5.     const char *str1_ptr = str1;
  6.     const char *str2_ptr = str2;
  7.     bool equals = true;
  8.  
  9.     while (*str1_ptr != '\0') {
  10.  
  11.         if(*str2_ptr == '\0') {
  12.             equals = false;
  13.             break;
  14.         }
  15.  
  16.         if(*str2_ptr > *str1_ptr ||
  17.            *str1_ptr > *str2_ptr) {
  18.             equals = false;
  19.             break;
  20.         }
  21.  
  22.         printf("[%c] == [%c]\n", (char)*str1_ptr, (char)*str2_ptr);
  23.  
  24.         str1_ptr++;
  25.         str2_ptr++;
  26.     }
  27.  
  28.     if (*str2_ptr != '\0') {
  29.         equals = false;
  30.     }
  31.  
  32.     printf("son: %s\n", equals ? "iguales" : "diferentes");
  33. }
  34.  
  35. int main () {
  36.  
  37.     str_equals("cadena 1", "cadena 2");
  38.     str_equals("cadena igual", "cadena igual");
  39.  
  40.     return 0;
  41. }
  #4 (permalink)  
Antiguo 04/10/2015, 02:40
 
Fecha de Ingreso: noviembre-2014
Mensajes: 22
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Función comparar strings en c

Muchas gracias kspr por tu ayuda, ya entiendo el código

Etiquetas: char, int, programa, string, strings
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 03:55.