¿Por qué no se muestran las tildes y "caracteres especiales" en C?

Iniciado por Aikanáro Anário, 18 Abril 2011, 00:27 AM

0 Miembros y 1 Visitante están viendo este tema.

Aikanáro Anário

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?
Lo que faltaba en internet: http://binar10s.blogspot.com/

Oblivi0n

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

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

Aikanáro Anário

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.
Lo que faltaba en internet: http://binar10s.blogspot.com/

Castiblanco

#3
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 (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main() {

printf("\240"); //a
printf("\202"); //e
printf("\241"); //i
printf("\242"); //o
printf("\243"); //u

system("pause");

}


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

Saludos...

Aikanáro Anário

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++.
Lo que faltaba en internet: http://binar10s.blogspot.com/

Castiblanco

Qué compilador usas? y qué errores da?

Yo uso Dev-C++

Saludos...

Aikanáro Anário

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 ===|
Lo que faltaba en internet: http://binar10s.blogspot.com/

Nakp

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
Ojo por ojo, y el mundo acabará ciego.

Aikanáro Anário

Cita de: Nakp en 18 Abril 2011, 06:39 AM

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


¿Explicas?
Lo que faltaba en internet: http://binar10s.blogspot.com/

Castiblanco

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...

printf("\XXX");



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...