Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2012, 13:10
adalsuper
 
Fecha de Ingreso: mayo-2012
Mensajes: 60
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Cambio mayúscula-minúscula en C

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
  1. /*Función convierteMinus
  2.  @param n E/S variable que almacena el carácter a convertir en minúscula
  3.  return: n devuelve el carácter en minúscula*/
  4. char convierteMinus(char n) {
  5.   char    nu;
  6.  
  7.   if(n == 'Á')
  8.     nu = 'á';
  9.   if(n == 'É')
  10.     nu = 'é';
  11.   if(n == 'Í')
  12.     nu = 'í';
  13.   if(n == 'Ó')
  14.     nu = 'ó';
  15.   if(n == 'Ú')
  16.     nu = 'ú';
  17.   if(n != 'Á' && n != 'É' && n != 'Í' && n != 'Ó' && n != 'Ú')
  18.     nu = n - ('a' - 'A');
  19.   return nu;
  20. }
  21.  
  22. /*Función convierteMayus
  23.  @param n E/S variable que almacena el carácter a convertir en mayúscula
  24.  return: n devuelve el carácter en mayúscula*/
  25. char convierteMayus(char n) {
  26.   char nu;
  27.  
  28.   if(n == 'á')
  29.     nu = 'Á';
  30.   if(n == 'é')
  31.     nu = 'É';
  32.   if(n == 'í')
  33.     nu = 'Í';
  34.   if(n == 'ó')
  35.     nu = 'Ó';
  36.   if(n == 'ú')
  37.     nu = 'Ú';
  38.   if(n == 'Ñ')
  39.     nu = 'ñ';
  40.   if(n != 'á' && n != 'é' && n != 'í' && n != 'ó' && n != 'ú')
  41.     nu = n + ('a' - 'A');
  42.   return nu;
  43. }
  44.  
  45. /*Función convierteCadena
  46.  @param cad[] E/S es la cadena que nos llega para convertir a Nombre Propio
  47.  return: no devuelve nada*/
  48. void convierteCadena(char cad[]) {
  49.   int     i = 0;
  50.   char    letra;
  51.  
  52.   while(cad[i] != '\0') {
  53.     if(cad[i] != '\0') {
  54.       if(cad[i] == ' ') {
  55.     ++i;
  56.     /*CONVERTIR A MAYÚSCULA */
  57.     letra = cad[i];
  58.     cad[i] = convierteMayus(letra);
  59.     ++i;
  60.       } else {
  61.     if(i == 0) {
  62.       /*CONVERTIR A MAYÚSCULA */
  63.       letra = cad[i];
  64.       cad[i] = convierteMayus(letra);
  65.       ++i;
  66.     } else {
  67.       /*CONVERTIR A MINÚSCULA */
  68.       letra = cad[i];
  69.       cad[i] = convierteMinus(letra);
  70.       ++i;
  71.     }
  72.       }
  73.     } else
  74.       printf("Hemos convertido a nombre propio\n");
  75.   }
  76. }

el problema esta en las funciones de arriba.
gracias!