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?
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
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.
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:
#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...
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++.
Qué compilador usas? y qué errores da?
Yo uso Dev-C++
Saludos...
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 ===|
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
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?
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");
(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...
http://foro.elhacker.net/programacion_general/duda_de_novato_en_free_pascal-t306810.0.html;msg1526760#msg1526760
Saludos.
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?