[C] Convertir las letras acentuadas a mayúsculas

169 views
0

main.c

 

#include <string.h>
#include <stdio.h>

#include "conversion.iso-8859-15.c"

void convertir_minusculas(char* buffer) {
  unsigned char* indice;
  while (*buffer) {
    indice = strchr(mayusculas, *buffer);
    if (indice != NULL) {
      *buffer = minusculas[indice - mayusculas];
    }
    buffer++;
  }
}

void convertir_mayusculas(char* buffer) {
  unsigned char* indice;
  while (*buffer) {
    indice = strchr(minusculas, *buffer);
    if (indice != NULL) {
      *buffer = mayusculas[indice - minusculas];
    }
    buffer++;
  }
}

void main(void) {
  char buffer[250];
  printf("%s\n%s\n", mayusculas, minusculas);
  while (!feof(stdin)) {
    fgets(buffer, 250, stdin);
    convertir_minusculas(buffer);
    puts(buffer);
    convertir_mayusculas(buffer);
    puts(buffer);
    *buffer = 0;
  }
}

 

 

conversion.iso-8859-15.c

unsigned char mayusculas[] = {
  0x41, // 0x0041 # LATIN CAPITAL LETTER A
  0xC6, // 0x00C6 # LATIN CAPITAL LETTER AE
  0xC1, // 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
  0xC2, // 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  0xC4, // 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
  0xC0, // 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
  0xC5, // 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
  0xC3, // 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
  0x42, // 0x0042 # LATIN CAPITAL LETTER B
  0x43, // 0x0043 # LATIN CAPITAL LETTER C
  0xC7, // 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
  0x44, // 0x0044 # LATIN CAPITAL LETTER D
  0x45, // 0x0045 # LATIN CAPITAL LETTER E
  0xD0, // 0x00D0 # LATIN CAPITAL LETTER ETH
  0xC9, // 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
  0xCA, // 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  0xCB, // 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
  0xC8, // 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
  0x46, // 0x0046 # LATIN CAPITAL LETTER F
  0x47, // 0x0047 # LATIN CAPITAL LETTER G
  0x48, // 0x0048 # LATIN CAPITAL LETTER H
  0x49, // 0x0049 # LATIN CAPITAL LETTER I
  0xCD, // 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
  0xCE, // 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  0xCF, // 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
  0xCC, // 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
  0x4A, // 0x004A # LATIN CAPITAL LETTER J
  0x4B, // 0x004B # LATIN CAPITAL LETTER K
  0x4C, // 0x004C # LATIN CAPITAL LETTER L
  0x4D, // 0x004D # LATIN CAPITAL LETTER M
  0x4E, // 0x004E # LATIN CAPITAL LETTER N
  0xD1, // 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
  0x4F, // 0x004F # LATIN CAPITAL LETTER O
  0xD3, // 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
  0xD4, // 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  0xD6, // 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
  0xD2, // 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
  0xD8, // 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
  0xD5, // 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
  0x50, // 0x0050 # LATIN CAPITAL LETTER P
  0x51, // 0x0051 # LATIN CAPITAL LETTER Q
  0x52, // 0x0052 # LATIN CAPITAL LETTER R
  0x53, // 0x0053 # LATIN CAPITAL LETTER S
  0x54, // 0x0054 # LATIN CAPITAL LETTER T
  0xDE, // 0x00DE # LATIN CAPITAL LETTER THORN
  0x55, // 0x0055 # LATIN CAPITAL LETTER U
  0xDA, // 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
  0xDB, // 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  0xDC, // 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
  0xD9, // 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
  0x56, // 0x0056 # LATIN CAPITAL LETTER V
  0x57, // 0x0057 # LATIN CAPITAL LETTER W
  0x58, // 0x0058 # LATIN CAPITAL LETTER X
  0x59, // 0x0059 # LATIN CAPITAL LETTER Y
  0xDD, // 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
  0xBE, // 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
  0x5A, // 0x005A # LATIN CAPITAL LETTER Z
  0    // Fin de cadena
};
unsigned char minusculas[] = {
  0x61, // 0x0061 # LATIN SMALL LETTER A
  0xE6, // 0x00E6 # LATIN SMALL LETTER AE
  0xE1, // 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
  0xE2, // 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
  0xE4, // 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
  0xE0, // 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
  0xE5, // 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
  0xE3, // 0x00E3 # LATIN SMALL LETTER A WITH TILDE
  0x62, // 0x0062 # LATIN SMALL LETTER B
  0x63, // 0x0063 # LATIN SMALL LETTER C
  0xE7, // 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
  0x64, // 0x0064 # LATIN SMALL LETTER D
  0x65, // 0x0065 # LATIN SMALL LETTER E
  0xF0, // 0x00F0 # LATIN SMALL LETTER ETH
  0xE9, // 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
  0xEA, // 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
  0xEB, // 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
  0xE8, // 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
  0x66, // 0x0066 # LATIN SMALL LETTER F
  0x67, // 0x0067 # LATIN SMALL LETTER G
  0x68, // 0x0068 # LATIN SMALL LETTER H
  0x69, // 0x0069 # LATIN SMALL LETTER I
  0xED, // 0x00ED # LATIN SMALL LETTER I WITH ACUTE
  0xEE, // 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
  0xEF, // 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
  0xEC, // 0x00EC # LATIN SMALL LETTER I WITH GRAVE
  0x6A, // 0x006A # LATIN SMALL LETTER J
  0x6B, // 0x006B # LATIN SMALL LETTER K
  0x6C, // 0x006C # LATIN SMALL LETTER L
  0x6D, // 0x006D # LATIN SMALL LETTER M
  0x6E, // 0x006E # LATIN SMALL LETTER N
  0xF1, // 0x00F1 # LATIN SMALL LETTER N WITH TILDE
  0x6F, // 0x006F # LATIN SMALL LETTER O
  0xF3, // 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
  0xF4, // 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
  0xF6, // 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
  0xF2, // 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
  0xF8, // 0x00F8 # LATIN SMALL LETTER O WITH STROKE
  0xF5, // 0x00F5 # LATIN SMALL LETTER O WITH TILDE
  0x70, // 0x0070 # LATIN SMALL LETTER P
  0x71, // 0x0071 # LATIN SMALL LETTER Q
  0x72, // 0x0072 # LATIN SMALL LETTER R
  0x73, // 0x0073 # LATIN SMALL LETTER S
  0x74, // 0x0074 # LATIN SMALL LETTER T
  0xFE, // 0x00FE # LATIN SMALL LETTER THORN
  0x75, // 0x0075 # LATIN SMALL LETTER U
  0xFA, // 0x00FA # LATIN SMALL LETTER U WITH ACUTE
  0xFB, // 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
  0xFC, // 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
  0xF9, // 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
  0x76, // 0x0076 # LATIN SMALL LETTER V
  0x77, // 0x0077 # LATIN SMALL LETTER W
  0x78, // 0x0078 # LATIN SMALL LETTER X
  0x79, // 0x0079 # LATIN SMALL LETTER Y
  0xFD, // 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
  0xFF, // 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
  0x7A, // 0x007A # LATIN SMALL LETTER Z
  0    // Fin de cadena
};

 

 

 

About author

PandaGG

Lok'tar ogar

Your email address will not be published. Required fields are marked *