como poner acentos

Iniciado por noctis, 24 Octubre 2010, 12:33 PM

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

noctis

estoy con C y no puedo poner acentos para las palabras al intentar copiar un texto muchas gracias

Horricreu

#1

  • Si estás programando en C, la función printf() te permite, mediante el parámetro de carácter %c, pasarle un código ASCII, en este caso un acento.
  • Si estás programando en C++, la librería clocale junto con la función de salida de la librería iostream, cout, te permite trabajar con acentos con total normalidad.

Este es un ejemplo para C:

#include <stdio.h>

int main()
{
printf("%c.", 160);

getchar();

return 0;
}


Y este para C++:

Código (cpp) [Seleccionar]
#include <iostream>
#include <clocale>

int main()
{
std::locale::global(std::locale("spanish"));

std::cout << "á.";

std::cin.get();

return 0;
}


Espero que haya quedado claro :)

тαптяα

#2
#include <stdio.h>
int main(){
printf("Hay un %crbol, que mat%c a un colibr%c.",160,162,161);
printf("\nHay un \xA0rbol, que mat\xA2 a un colibr\xA1.");
return 0;
}


Espero que entiendas el porque.

Ahora todos.

á –> printf("%c",160);
é –> printf("%c",130);
í –> printf("%c",161);
ó –> printf("%c",162);
ú –> printf("%c",163);

á –> printf("\xA0″);
é –> printf("\x82″);
í –> printf("\xA1″);
ó –> printf("\xA2″);
ú –> printf("\xA3″);

MG2010

CitarSi estás programando en C++, la librería locale junto con la función de salida de la librería iostream, cout, te permite trabajar con acentos con total normalidad.
En mi ubuntu no necesito incluir locale... pero supongo que es un buen tip para aumentar la potabilidad del código...

Gracias !
User

Horricreu

#4
Directamente, locale y clocale son librerías standard de C y C++ respectivamente.

globsharp

Hay algo que no he entendido, se supone que cuando escribes printf("á") esto lo toma como una 'a' y un acento, osea, dos caracteres, que es lo que se detecta normalmente como un caracter extraño, ¿no? ¿Y cuando usas el código ASCII lo detecta como un único carácter y este lo detecta correctamente cualquier codificación?

A ver si lo he entendido bien, pues con el tema de los acentos sigo liándome mucho.
Duérmete

Horricreu

#6
Es que "á" es un solo carácter ;D Acentos y caracteres especiales del alfabeto latino, que NO forman parte del propio código ASCII, están en su ampliación estándar ISO/IEC 8859-1.

globsharp

¿Pero entonces por qué al hacerlo con código ASCII se visualiza bien y al hacerlo poniendo directamente 'á' sale un caracter extraño? ¿No es lo mismo?  :huh:
Duérmete

Horricreu

#8
La verdad es que no sé el por qué. Pero si quieres, puedes cambiar la configuración de tu proyecto a Unicode y, utilizar una función de salida con caracteres especiales sin ningún tipo de problema.

globsharp

Aah ya lo entendí, es por la codificación en el proyecto. Es que me parecía lo mismo y por eso no lo entendía, gracias ;)
Duérmete