Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Aikanáro Anário en 18 Abril 2011, 00:27 am



Título: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Aikanáro Anário en 18 Abril 2011, 00:27 am
Al imprimir líneas de texto en un programa en modo consola, las tildes, signos de exclamación/interrogación y otros no se muestran correctamente y se sustituyen por otros raros :S ¿Por qué pasa eso y cómo se puede arreglar?


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Oblivi0n en 18 Abril 2011, 01:34 am
creo que es porque por defecto usas ASCII, y este no contiene caracteres con tildes y demas, te dejo la tabla ASCII
http://www.webtutoriales.com/images/tutoriales/tabla_ascii.gif (http://www.webtutoriales.com/images/tutoriales/tabla_ascii.gif)

Para imprimir tildes y otros caracteres, deberias de usar unicode, pero ahora mismo desconozco si se puede usar unicode con ANSI C


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Aikanáro Anário en 18 Abril 2011, 01:53 am
Se usa ASCII por defecto en el compilador, dependiendo del programa, en el código, en todo el sistema o donde??

El ASCII extendido sí soporta tildes.


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Castiblanco en 18 Abril 2011, 04:11 am
Si te fijas cuando pones caracteres especiales en el compilador sale una cosa y en la consola sale otra, pero esa otra no siempre es la misma, varia dependiendo el carácter que pusiste... creo que era algo como que en un lado se maneja ASCII y en el otro ANSI, entonces el carácter 100 en ASCII no es el mismo que el 100 en ASCII y así... pero no estoy nada seguro.

Igual mira en la practica es así ^^, si quieres que salgan tildes:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.  
  7. printf("\240"); //a
  8. printf("\202"); //e
  9. printf("\241"); //i
  10. printf("\242"); //o
  11. printf("\243"); //u
  12.  
  13. system("pause");
  14.  
  15. }
  16.  

PD: Yo uso Windows, pero creo (eso si estoy casi seguro), que en Linux si funciona normal esto de las tildes.

Saludos...


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Aikanáro Anário en 18 Abril 2011, 04:30 am
El compilador ha tirado como 3 errores cuando pegue tu código. Además estoy empezando a programar en C, no en C++, creo que el código que has puesto es para C++.


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Castiblanco en 18 Abril 2011, 05:02 am
Qué compilador usas? y qué errores da?

Yo uso Dev-C++

Saludos...


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Aikanáro Anário en 18 Abril 2011, 05:37 am
Uso code::blocks

Los errores son:
Citar
error: iostream: No such file or directory
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'namespace'
In function 'main':
warning: incompatible implicit declaration of built-in function 'printf'
||=== Build finished: 2 errors, 1 warnings ===|


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Nakp en 18 Abril 2011, 06:39 am
ninguno de esos es compilador, son IDEs, el compilador que usan ambos por defecto es gcc sobre mingw

deben usar \000 y reemplazar los 0's por el equivalente octal del caracter ascii


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Aikanáro Anário en 18 Abril 2011, 07:33 am

deben usar \000 y reemplazar los 0's por el equivalente octal del caracter ascii


¿Explicas?


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Castiblanco en 18 Abril 2011, 14:36 pm
Ahh ahora todo más claro :P

Ya, miras el carácter que quieras poner, luego miras su número decimal y lo pasas a octal y lo pones en vez de las XXX...

Código
  1. printf("\XXX");

(http://www.computerhope.com/ascii.gif)

Entonces el de la "á" en decimal es 160, lo pasas a octal y da 240 y eso es lo que pones en vez de la XXX...

Pasar de decimal a octal :http://calc.50x.eu/

Saludos...


Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Khronos14 en 18 Abril 2011, 15:25 pm
http://foro.elhacker.net/programacion_general/duda_de_novato_en_free_pascal-t306810.0.html;msg1526760#msg1526760

Saludos.



Título: Re: ¿Por qué no se muestran las tildes y "caracteres especiales" en C?
Publicado por: Aikanáro Anário en 18 Abril 2011, 16:21 pm
Por ahora me quedo con la forma que dijo Nakp, para mi, que estoy empezando es más sencilla.

Entendí la parte de lo que hay que hacer, cuando dije explica me refería a ¿por qué es así? por qué hay que pasarlo a octal? ¿no tiene que ver nada con la IDE o el compilador?