// fichero cadenas.h // longitud de una cadena (sin el '\0') unsigned cadlen(const char* caract) { unsigned i=0; while (caract[i] != '\0') i++; return i; } // copia de una cadena carac2 en otra carac1 char* cadcpy(char* carac1, const char* carac2) { int i=0; while ((carac1[i]=carac2[i]) != '\0') i++; return carac1; } // añadir carac2 a continuación de carac1 (sin el '\0') char* cadcat(char* carac1, const char* carac2) { int i=0, j=0; while (carac1[i] != '\0') i++; while (carac2[j] != '\0') carac1[i++] = carac2[j++]; carac1[i] = '\0'; return carac1 ; } // comparar alfabéticamente dos cadenas de caracteres int cadcmp(char* carac1, char* carac2) { int i = 0, dif; while (carac1[i] != '\0') { dif = carac1[i] - carac2[i]; if (dif == 0) i++; else return (dif); } if (carac2[i] == '\0') return(0); return (carac1[i] - carac2[i]); } /* este filtro convierte todas las letras acentuadas en minúsculas sin acento */ char filtro(char c) { if(c>='A' && c<='Z') return (c+'a'-'A'); if(c=='á') return 'a'; if(c=='é') return 'e'; if(c=='í') return 'i'; if(c=='ó') return 'o'; if(c=='ú') return 'u'; if(c=='Á') return 'a'; if(c=='É') return 'e'; if(c=='Í') return 'i'; if(c=='Ó') return 'o'; if(c=='Ú') return 'u'; return c; } /* Esta función compara cadenas considerando idénticas mayúsculas y minúsculas, vocales acentuadas y sin acentuar int cadcomp(char* carac1, char* carac2) { int i = 0, dif; while (filtro(carac1[i]) != '\0') { dif = filtro(carac1[i]) - filtro(carac2[i]); if (dif == 0) i++; else return (dif); } if (filtro(carac2[i]) == '\0') return(0); return (filtro(carac1[i]) - filtro(carac2[i])); }