[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