[C con Clase] [Bulk] Re: Varias dudas del curso
ZeLion
Zelion_cracking en yahoo.es
Mar Nov 27 08:20:36 CET 2007
Hola, para añadir algo mas, te puedes crear una funcion donde añadirte los
caracteres 'extraños'
CODIGO:
---------------------------------------------------------------------
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// function para mostrar acentos y letras especiales
void Printf(const char *strText)
{
char ch;
short i,iLength;
iLength=strlen(strText);
// Recorrer la cadena y sustituir por el codigo ASCII correcto.
for(i=0;i<iLength;i++)
{
ch=strText[i];
switch(ch)
{
case 'á':
printf("\240");
break;
case 'é':
printf("\202");
break;
case 'í':
printf("\241");
break;
case 'ó':
printf("\242");
break;
case 'ú':
printf("\243");
break;
case 'ñ':
printf("%c",-92);
break;
case 'Ñ':
printf("%c",-91);
break;
case 'Á':
printf("%c",-75);
break;
case 'É':
printf("%c",-112);
break;
case 'Í':
printf("%c",-42);
break;
case 'Ó':
printf("%c",-32);
break;
case 'Ú':
printf("%c",-23);
break;
default:
printf("%c",ch);
break;
}
}
}
int main(int argc, char *argv[])
{
// Usar la funcion interface de letras especiales
Printf(" ña ña ña ña\n");
system("PAUSE");
return 0;
}
Un saludo.
.: ZeLion :.
>-----Mensaje original-----
>De: cconclase-bounces en listas.conclase.net [mailto:cconclase-
>bounces en listas.conclase.net] En nombre de JoseL
>Enviado el: lunes, 26 de noviembre de 2007 22:37
>Para: cconclase en listas.conclase.net
>Asunto: [Bulk] Re: [C con Clase] Varias dudas del curso
>
>El pasado 2007-11-22 22:03:36, David Reza escribió:
>
>DR> 2.- En mis programas (de consola) no salen los acentos, ya que salen
>otras
>DR> letras que sustituyen a las vocales con acentos.
>DR> ¿Cómo puedo hacer que se visualicen correctamente los acentos?
>
>
>Hola David. Acabo de empezar el curso y tu post me ha resultado muy útil
>para aclarar muchas cosas. Pronto plantearé mis primeras dudas. Mientras
>tanto me gustaría comentar algo sobre el problema de las eñes y las vocales
>acentuadas. Yo pensaba que la consola sencillamente era incapaz de mostrar
>estos caracteres y no le dí mayor importancia. Pero al ejecutar un programa
>repleto de errores me fijé que entre un montón de símbolos extraños también
>se mostraban algunos caracteres propios del castellano. Así que escribí un
>pequeño programita para imprimir todos los caracteres posibles:
>
>#include <iostream>
>using namespace std;
>
>int main()
>{
> char c;
> for (int i=16;i<=255;i++)
> {
> c = i;
> if(i<100) cout << " ";
> cout << i << " = " << c;
> if((i+1)%8) cout << " "; else cout << endl;
> }
> cin.get();
> return 0;
>}
>
>El resultado es este:
>
>http://img145.imageshack.us/img145/9927/asciihz0.jpg
>
>Comprobé que con los correspondientes valores en octal y hexadecimal se
>podían utilizar secuencias de escape para imprimir esos caracteres:
>
>'ñ' = '\244' = '\xA4'
>'Ñ' = '\245' = '\xA5'
>'á' = '\240' = '\xA0'
>'é' = '\202' = '\x82'
>'í' = '\241' = '\xA1'
>'ó' = '\242' = '\xA2'
>'ú' = '\243' = '\xA3'
>'Á' = '\265' = '\xB5'
>'É' = '\220' = '\x90'
>'Í' = '\326' = '\xD6'
>'Ó' = '\340' = '\xE0'
>'Ú' = '\351' = '\xE9'
>'ü' = '\201' = '\x81'
>'Ü' = '\232' = '\x9A'
>
>Al menos, con Windows XP. Por ejemplo, las frases:
>
> "España está en la península ibérica.
> Álava, Guipúzcoa y Castellón son bilingües."
>
>Se puede mostrar en la consola de esta manera:
>
>#include <iostream>
>using namespace std;
>
>int main()
>{
> cout << endl;
> cout << "Espa\244a est\240 en la pen\241nsula ib\202rica." << endl;
> cout << "\265lava, Guip\243zcoa y Castell\242n son biling\201es.";
>
> cout << endl << endl; // o bien:
>
> cout << "Espa\xA4\x61 est\xA0 en la pen\xA1nsula ib\x82rica." <<
>endl;
> cout << "\xB5lava, Guip\xA3zcoa y Castell\xA2n son
biling\x81\x65s.";
>
> cin.get();
> return 0;
>}
>
>Fíjate que en caso de que utilices la notación hexadecimal, si detrás de
>una secuencia de escape tienes que mostrar la letra a, b, c, d, e o f,
>también tienes que utilizar para éstas una secuencia de escape, porque sino
>el compilador las considera como parte de la secuencia de escape anterior y
>da un warning "hex escape sequience out of range". Es el caso de "España"
>(Espa\xA4\x61) y "bilingüe" (biling\x81\x65)
>
>Espero que te sirva de ayuda. Saludos.
>
>_______________________________________________
>Lista de correo Cconclase Cconclase en listas.conclase.net
>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
Más información sobre la lista de distribución Cconclase