[C] Convertir las letras acentuadas a mayúsculas

  • 0 Respuestas
  • 1086 Vistas

Valarjar
Hijo de Odyn

[C] Convertir las letras acentuadas a mayúsculas
« en: Mayo 18, 2017, 17:00:26 pm »
main.c
Código: C
  1. #include <string.h>
  2. #include <stdio.h>
  3.  
  4. #include "conversion.iso-8859-15.c"
  5.  
  6. void convertir_minusculas(char* buffer) {
  7.   unsigned char* indice;
  8.   while (*buffer) {
  9.     indice = strchr(mayusculas, *buffer);
  10.     if (indice != NULL) {
  11.       *buffer = minusculas[indice - mayusculas];
  12.     }
  13.     buffer++;
  14.   }
  15. }
  16.  
  17. void convertir_mayusculas(char* buffer) {
  18.   unsigned char* indice;
  19.   while (*buffer) {
  20.     indice = strchr(minusculas, *buffer);
  21.     if (indice != NULL) {
  22.       *buffer = mayusculas[indice - minusculas];
  23.     }
  24.     buffer++;
  25.   }
  26. }
  27.  
  28. void main(void) {
  29.   char buffer[250];
  30.   printf("%s\n%s\n", mayusculas, minusculas);
  31.   while (!feof(stdin)) {
  32.     fgets(buffer, 250, stdin);
  33.     convertir_minusculas(buffer);
  34.     puts(buffer);
  35.     convertir_mayusculas(buffer);
  36.     puts(buffer);
  37.     *buffer = 0;
  38.   }
  39. }
  40.  

conversion.iso-8859-15.c
Código: C
  1. unsigned char mayusculas[] = {
  2.   0x41, // 0x0041 # LATIN CAPITAL LETTER A
  3.   0xC6, // 0x00C6 # LATIN CAPITAL LETTER AE
  4.   0xC1, // 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
  5.   0xC2, // 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  6.   0xC4, // 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
  7.   0xC0, // 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
  8.   0xC5, // 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
  9.   0xC3, // 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
  10.   0x42, // 0x0042 # LATIN CAPITAL LETTER B
  11.   0x43, // 0x0043 # LATIN CAPITAL LETTER C
  12.   0xC7, // 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
  13.   0x44, // 0x0044 # LATIN CAPITAL LETTER D
  14.   0x45, // 0x0045 # LATIN CAPITAL LETTER E
  15.   0xD0, // 0x00D0 # LATIN CAPITAL LETTER ETH
  16.   0xC9, // 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
  17.   0xCA, // 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  18.   0xCB, // 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
  19.   0xC8, // 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
  20.   0x46, // 0x0046 # LATIN CAPITAL LETTER F
  21.   0x47, // 0x0047 # LATIN CAPITAL LETTER G
  22.   0x48, // 0x0048 # LATIN CAPITAL LETTER H
  23.   0x49, // 0x0049 # LATIN CAPITAL LETTER I
  24.   0xCD, // 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
  25.   0xCE, // 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  26.   0xCF, // 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
  27.   0xCC, // 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
  28.   0x4A, // 0x004A # LATIN CAPITAL LETTER J
  29.   0x4B, // 0x004B # LATIN CAPITAL LETTER K
  30.   0x4C, // 0x004C # LATIN CAPITAL LETTER L
  31.   0x4D, // 0x004D # LATIN CAPITAL LETTER M
  32.   0x4E, // 0x004E # LATIN CAPITAL LETTER N
  33.   0xD1, // 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
  34.   0x4F, // 0x004F # LATIN CAPITAL LETTER O
  35.   0xD3, // 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
  36.   0xD4, // 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  37.   0xD6, // 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
  38.   0xD2, // 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
  39.   0xD8, // 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
  40.   0xD5, // 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
  41.   0x50, // 0x0050 # LATIN CAPITAL LETTER P
  42.   0x51, // 0x0051 # LATIN CAPITAL LETTER Q
  43.   0x52, // 0x0052 # LATIN CAPITAL LETTER R
  44.   0x53, // 0x0053 # LATIN CAPITAL LETTER S
  45.   0x54, // 0x0054 # LATIN CAPITAL LETTER T
  46.   0xDE, // 0x00DE # LATIN CAPITAL LETTER THORN
  47.   0x55, // 0x0055 # LATIN CAPITAL LETTER U
  48.   0xDA, // 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
  49.   0xDB, // 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  50.   0xDC, // 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
  51.   0xD9, // 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
  52.   0x56, // 0x0056 # LATIN CAPITAL LETTER V
  53.   0x57, // 0x0057 # LATIN CAPITAL LETTER W
  54.   0x58, // 0x0058 # LATIN CAPITAL LETTER X
  55.   0x59, // 0x0059 # LATIN CAPITAL LETTER Y
  56.   0xDD, // 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
  57.   0xBE, // 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
  58.   0x5A, // 0x005A # LATIN CAPITAL LETTER Z
  59.   0    // Fin de cadena
  60. };
  61. unsigned char minusculas[] = {
  62.   0x61, // 0x0061 # LATIN SMALL LETTER A
  63.   0xE6, // 0x00E6 # LATIN SMALL LETTER AE
  64.   0xE1, // 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
  65.   0xE2, // 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
  66.   0xE4, // 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
  67.   0xE0, // 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
  68.   0xE5, // 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
  69.   0xE3, // 0x00E3 # LATIN SMALL LETTER A WITH TILDE
  70.   0x62, // 0x0062 # LATIN SMALL LETTER B
  71.   0x63, // 0x0063 # LATIN SMALL LETTER C
  72.   0xE7, // 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
  73.   0x64, // 0x0064 # LATIN SMALL LETTER D
  74.   0x65, // 0x0065 # LATIN SMALL LETTER E
  75.   0xF0, // 0x00F0 # LATIN SMALL LETTER ETH
  76.   0xE9, // 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
  77.   0xEA, // 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
  78.   0xEB, // 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
  79.   0xE8, // 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
  80.   0x66, // 0x0066 # LATIN SMALL LETTER F
  81.   0x67, // 0x0067 # LATIN SMALL LETTER G
  82.   0x68, // 0x0068 # LATIN SMALL LETTER H
  83.   0x69, // 0x0069 # LATIN SMALL LETTER I
  84.   0xED, // 0x00ED # LATIN SMALL LETTER I WITH ACUTE
  85.   0xEE, // 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
  86.   0xEF, // 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
  87.   0xEC, // 0x00EC # LATIN SMALL LETTER I WITH GRAVE
  88.   0x6A, // 0x006A # LATIN SMALL LETTER J
  89.   0x6B, // 0x006B # LATIN SMALL LETTER K
  90.   0x6C, // 0x006C # LATIN SMALL LETTER L
  91.   0x6D, // 0x006D # LATIN SMALL LETTER M
  92.   0x6E, // 0x006E # LATIN SMALL LETTER N
  93.   0xF1, // 0x00F1 # LATIN SMALL LETTER N WITH TILDE
  94.   0x6F, // 0x006F # LATIN SMALL LETTER O
  95.   0xF3, // 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
  96.   0xF4, // 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
  97.   0xF6, // 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
  98.   0xF2, // 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
  99.   0xF8, // 0x00F8 # LATIN SMALL LETTER O WITH STROKE
  100.   0xF5, // 0x00F5 # LATIN SMALL LETTER O WITH TILDE
  101.   0x70, // 0x0070 # LATIN SMALL LETTER P
  102.   0x71, // 0x0071 # LATIN SMALL LETTER Q
  103.   0x72, // 0x0072 # LATIN SMALL LETTER R
  104.   0x73, // 0x0073 # LATIN SMALL LETTER S
  105.   0x74, // 0x0074 # LATIN SMALL LETTER T
  106.   0xFE, // 0x00FE # LATIN SMALL LETTER THORN
  107.   0x75, // 0x0075 # LATIN SMALL LETTER U
  108.   0xFA, // 0x00FA # LATIN SMALL LETTER U WITH ACUTE
  109.   0xFB, // 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
  110.   0xFC, // 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
  111.   0xF9, // 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
  112.   0x76, // 0x0076 # LATIN SMALL LETTER V
  113.   0x77, // 0x0077 # LATIN SMALL LETTER W
  114.   0x78, // 0x0078 # LATIN SMALL LETTER X
  115.   0x79, // 0x0079 # LATIN SMALL LETTER Y
  116.   0xFD, // 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
  117.   0xFF, // 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
  118.   0x7A, // 0x007A # LATIN SMALL LETTER Z
  119.   0    // Fin de cadena
  120. };
  121.