[C] Convertir las letras acentuadas a mayúsculas

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;
    }
    buffer++;
  }
}

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

void main(void) {
  char buffer;
  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
};

 

 

 

PandaGG
Lok'tar ogar

Dejar respuesta

Please enter your comment!
Please enter your name here

Sponsor

Últimos

Avance de Horizon Forbidden West

El año 2022 ha empezado fuerte en consolas, y los próximos meses estarán repletos de potentísimos lanzamientos. Uno de los más esperados será el...

Los mejores juegos de Android en 2021

Llega el momento de echar la vista atrás y repasar lo mejor que nos ha dejado 2021. Y hoy queremos hacerlo sobre uno de...

Avance de Hogwarts Legacy

Aunque este ambicioso RPG tuvo su primer anuncio hace bastante más de un año, con motivo del anuncio de los juegos que vería la...

Mejores mandos gaming para PC

Aunque es cierto que para muchos juegos la combinación de teclado y ratón es insuperable, no es menos cierto que muchos otros juegos ofrecen...

Los 6 juegos más esperados de 2022 para PC

El año 2021 va quedando atrás, y aunque los proyectos de videojuegos en PC son muchos cada año, son unos pocos los que acaparan...