Tengo que hacer una función que compare 2 cadenas ignorando las mayúsculas y minúsculas y me devuelva si son o no iguales.
Había pensado en hacerme una función "void aMayuscula (TCadena cad)" que convirtiera toda la cadena a mayuscula para implementarla en otra función y comparar las 2 cadenas pasadas a mayúscula. Pero para hacer esto tendría o que crear una cadena nueva copiando el contenido de la original ya en mayúscula o sobrescribir la original, cosa que no puedo porque en la pLantilla que me dan me pasan las cadenas como "const"
Lo que he hecho al final es una función "char aMayuscula (TCadena cad, unsigned pos)" que va dentro de un while que recorre las 2 cadenas y compara una a una las letras devueltas por la función "char aMayuscula".
Código
char aMayuscula(TCadena cad, unsigned pos){ char a; if(cad[pos]!='\0'){ if(cad[pos]>='a' and cad[pos]<='z'){ a=cad[pos]-32; }//end if }//end if return a; }
A continuación, la función que compara las cadenas:
Código
bool iguales_ignorando_tipo(const TCadena cad1, const TCadena cad2){ unsigned i=0; bool es=true; while(es && cad1[i]!='\0'&& cad2[i]!='\0' ){ if(aMayuscula(cad1,i)!=aMayuscula(cad2,i)) es=false; ++i; } return es; }
Al compilar me da error "invalid conversion from 'const char*' to 'char*'" Y no entiendo por qué sale.
¿Qué tengo mal?