Muy buenas, estoy haciendo una función en C a la que le llega una cadena con un nombre propio todo en mayúsculas. El caso es que lo voy a transformar al formato: Nombre Propio y el problema es con las tildes. Pues no sé si es C o el make que tengo, pero no me las coge. me da warnings del tipo: multi-character character constant
y no śe como arreglarlo.
El código sería el siguiente:
Código C:
Ver original/*Función convierteMinus
@param n E/S variable que almacena el carácter a convertir en minúscula
return: n devuelve el carácter en minúscula*/
char convierteMinus(char n) {
char nu;
if(n == 'Á')
nu = 'á';
if(n == 'É')
nu = 'é';
if(n == 'Í')
nu = 'í';
if(n == 'Ó')
nu = 'ó';
if(n == 'Ú')
nu = 'ú';
if(n != 'Á' && n != 'É' && n != 'Í' && n != 'Ó' && n != 'Ú')
nu = n - ('a' - 'A');
return nu;
}
/*Función convierteMayus
@param n E/S variable que almacena el carácter a convertir en mayúscula
return: n devuelve el carácter en mayúscula*/
char convierteMayus(char n) {
char nu;
if(n == 'á')
nu = 'Á';
if(n == 'é')
nu = 'É';
if(n == 'í')
nu = 'Í';
if(n == 'ó')
nu = 'Ó';
if(n == 'ú')
nu = 'Ú';
if(n == 'Ñ')
nu = 'ñ';
if(n != 'á' && n != 'é' && n != 'í' && n != 'ó' && n != 'ú')
nu = n + ('a' - 'A');
return nu;
}
/*Función convierteCadena
@param cad[] E/S es la cadena que nos llega para convertir a Nombre Propio
return: no devuelve nada*/
void convierteCadena(char cad[]) {
int i = 0;
char letra;
while(cad[i] != '\0') {
if(cad[i] != '\0') {
if(cad[i] == ' ') {
++i;
/*CONVERTIR A MAYÚSCULA */
letra = cad[i];
cad[i] = convierteMayus(letra);
++i;
} else {
if(i == 0) {
/*CONVERTIR A MAYÚSCULA */
letra = cad[i];
cad[i] = convierteMayus(letra);
++i;
} else {
/*CONVERTIR A MINÚSCULA */
letra = cad[i];
cad[i] = convierteMinus(letra);
++i;
}
}
} else
printf("Hemos convertido a nombre propio\n"); }
}
el problema esta en las funciones de arriba.
gracias!