[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

Guía Final Fantasy 2: consejos, trucos y recorrido.

Tras haber abordado la guía detallada del primer juego de esta magnífica y popularísima saga de juegos de rol japonés, es de justicia que...

Los mejores micrófonos para Streaming de 2021

Si has llegado hasta aquí es porque estás buscando un micrófono para iniciarte en el mundo del streaming. Estás en el lugar correcto. Pero...

Análisis de Beyond Mankind: The Awakening

Beyond Mankind: The Awaking es un título de distopía y supervivencia de la humanidad. Un juego que nos habla de un futuro en el que...

Guía Final Fantasy 1: consejos y trucos

Aunque resulte increíble, esta primera versión de la archiconocida saga de videojuegos de rol que apareció en 1987, está disfrutando de una segunda juventud....

Las 6 Mejores Webcams para Streaming

Si estás pensando en lanzarte al mundo de la creación de contenidos en Youtube, Twitch o cualquiera de las plataformas de moda, la primera...