Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] problemas con los acentos lenguaje c

Estas en el tema de problemas con los acentos lenguaje c en el foro de C/C++ en Foros del Web. Buenas hace poco que me inicie en el lenguaje c y tengo un problema, hice una agenda chiquita en consola que tiene la opcion de ...
  #1 (permalink)  
Antiguo 23/02/2014, 18:09
 
Fecha de Ingreso: octubre-2012
Ubicación: Mendoza
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta problemas con los acentos lenguaje c

Buenas hace poco que me inicie en el lenguaje c y tengo un problema, hice una agenda chiquita en consola que tiene la opcion de agregar contacto, ver contacto y salir del programa. todo lo hace bien lo unico es el tema de los acentos, he podido crear un par de funciones para que al usar acentos en consola me los muestre bien, cuando los datos los graba en un txt tambien me muestra bien los acentos, el unico problema que tengo es que cuando quiero ver los contactos en la consola ahi es donde no me toma los acentos de los nombres que vienen del txt. Intente hacer alguna funcion que me lea todos los caracteres del txt y me los cambie para mostrar los acentos en consola pero no me funciona. Alguna idea???

PD:perdon si este tema se trato pero no lo encontre en el foro
  #2 (permalink)  
Antiguo 23/02/2014, 18:21
 
Fecha de Ingreso: diciembre-2013
Mensajes: 150
Antigüedad: 10 años, 4 meses
Puntos: 8
Respuesta: problemas con los acentos lenguaje c

Oye, yo ya lo he encontrado dentro del foro. Debes sustituir la letra por su codigo ASCII al momento de imprimirlo. De todas maneras he aquí el link donde dice como ponerlos

http://www.forosdelweb.com/f14/mostr...onsola-330105/

Espero que ahora tengas una solucion mas cercana a lo que quieres.
__________________
¿Necesitas ayuda con algún algoritmo? Si tienes dudas, entonces visita: http://algoritmosypseudocodigo.blogspot.com/.
  #3 (permalink)  
Antiguo 23/02/2014, 18:34
 
Fecha de Ingreso: octubre-2012
Ubicación: Mendoza
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problemas con los acentos lenguaje c

Hola gracias por la respuesta, estuve viendo los links pero no me sirvieron porque lo que necesito es que tome el texto de un archivo txt lea los caracteres que tiene y si encuentra algun acento lo reemplaze por codigo ascii para que la consola muestre bien el caracter acentuado, el problema sigue estando al imprimir por consola el texto del txt..... Igual gracias por la respuesta.
  #4 (permalink)  
Antiguo 23/02/2014, 22:07
Avatar de omar10594  
Fecha de Ingreso: junio-2013
Ubicación: Mexico
Mensajes: 26
Antigüedad: 10 años, 10 meses
Puntos: 3
Respuesta: problemas con los acentos lenguaje c

Y que es lo que te muestra?, la letra sin acento, una caracter que nada tiene que ver, numeros, etc?.

En cualquier caso, como lees los datos desde el archivo?, lees toda una cadena, caracter por caracter?

Yo soy algo nuevo en C, pero igual y esta informacion seria de utilidad para alguien mas te ayude, aunque claro, igual intentare ver como poder solucionar tu problema, :D

~saludos~
  #5 (permalink)  
Antiguo 24/02/2014, 11:12
 
Fecha de Ingreso: octubre-2012
Ubicación: Mendoza
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problemas con los acentos lenguaje c

Hola gracias por responder...lo que me muestra en consola son simbolos y letras acentuadas que no tienen nada que ver....intente leyendo caracter por caracter y leyendo la cadena completa y de ambas formas me hace lo mismo, pasa que al tomar el caracter con acento del txt no me lo transforma a codigo ascii para que lo imprima correctamente en consola
  #6 (permalink)  
Antiguo 24/02/2014, 12:58
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: problemas con los acentos lenguaje c

Si no pegas aquí tu código no podemos hacer nada salvo indicarte formas de hacer.
Si quieres que vemos el problema debes postar el código aquí dentro de las etiquetas HIGHLIGHT que puedes seleccionar a la hora de escribir el mensaje, elijes c o cpp y pon el código en medio.
Lo siento. Si posteas el código te ayudaremos rápido.
  #7 (permalink)  
Antiguo 24/02/2014, 15:20
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: problemas con los acentos lenguaje c

Cita:
Iniciado por agustinsaid Ver Mensaje
Hola gracias por responder...lo que me muestra en consola son simbolos y letras acentuadas que no tienen nada que ver....intente leyendo caracter por caracter y leyendo la cadena completa y de ambas formas me hace lo mismo, pasa que al tomar el caracter con acento del txt no me lo transforma a codigo ascii para que lo imprima correctamente en consola
Prueba a usar "setlocale" que usa los caracteres indicados en el segundo de sus argumentos. En el ejemplo que te pongo es Spanish:



Eso sí, como es Spanish el punto decimal no es el punto sino la coma:

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<locale.h>
  3. #include <stdlib.h>
  4. #define NOM_ARCHIVO  "txt6.txt"
  5.  
  6. int main(void)
  7. {
  8.     setlocale(LC_ALL, "Spanish");
  9.     FILE *entrada;
  10.     char linea [80];
  11.     if ((entrada = fopen(NOM_ARCHIVO, "w")) == NULL){
  12.       perror(NOM_ARCHIVO);
  13.       return EXIT_FAILURE;
  14.    }
  15.     fprintf (entrada,"¡Hola mundo! años canción 2²\n");
  16.     fprintf (entrada,"España y olé  número y línea");
  17.     fclose(entrada);
  18.     if ((entrada = fopen(NOM_ARCHIVO, "r")) == NULL){
  19.       perror(NOM_ARCHIVO);
  20.       return EXIT_FAILURE;
  21.    }
  22.    while (! feof(entrada)){
  23.           fgets(linea, 80, entrada);
  24.           puts(linea);
  25.   }
  26.   fclose(entrada);
  27.   return 0;
  28. }
  #8 (permalink)  
Antiguo 24/02/2014, 16:44
 
Fecha de Ingreso: octubre-2012
Ubicación: Mendoza
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problemas con los acentos lenguaje c

Muchas gracias leosansan con el código que me pusiste me salio perfecto.... muchas gracias!!!!!!
  #9 (permalink)  
Antiguo 24/02/2014, 16:56
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: problemas con los acentos lenguaje c

Ya quisiera yo amigo leo XD
Pero tu código no anda en XP.
¿Y me hace que me pregunte si anda en otros SO?
Si sabes como hacerlo soy todo oídos ^^
  #10 (permalink)  
Antiguo 24/02/2014, 17:56
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: problemas con los acentos lenguaje c

¡MIE RRR DA XD!He conseguido descubrir por que no veo ñ ni é ni á ni muchas otras XD
Hay que cambiar la fuente a Lucida Console(O otra), pero tiene que ser una fuente True Type o no veras esos caracteres. Maldita consola de Windows XDDD, cada día me da mas ganas de irme a linux.
Eso se hace cuando compilas el programa, botón derecho en la la esquina de la consola, elijes propiedades y en la pestaña Fuentes elijes una que sea True Type, en mi caso solo tenia una y es la Lucida Console.
Después de eso ya todo me funciona bien.
Vaya chorradas he, todos los días hay que aprender cosas pffff
Llevaba meses de tras de esto.
  #11 (permalink)  
Antiguo 24/02/2014, 18:18
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: problemas con los acentos lenguaje c

Como ver la Ññ Áá Éé Íí Óó Úú ¡ ¿ ª º y muchos otras letras en la consola de windows XP CPP C++ C
Lo de arriba lo pongo para que lo encuentre la peña que busca XD
Bien pues después de cambiar la fuente de la consola por una que sea True Type como Lucida Console. Ponemos un comando que es SetConsoleOutputCP(1252); que es parte de la librería de windows.h. El 1252 supongo que se refiere a caracteres regionales en español.

Para saber la configuracion regional usar este programa.
Código C++:
Ver original
  1. #include <locale.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. int main(int argc, char* argv[])
  6. {
  7. printf("local: %s\n", setlocale(LC_ALL, ""));
  8. printf("Codificacíon %d\n", GetACP());
  9. return 0;
  10. }

Pueden probar si os va con esto:
Código C++:
Ver original
  1. //Save As Windows 1252
  2. #include<iostream>
  3. #include<windows.h>
  4.  #include <stdio.h>
  5. int main()
  6. {
  7.     SetConsoleOutputCP(1252);
  8.     std:: cout << "Con std::cout: àéêùÑñ Áá Éé Íí Óó Úú ¡ ¿ ª º " << std:: endl;
  9.     std:: cout << "¡España PALANTE ªº!!!!" << std:: endl;
  10.     printf("Con printf: àéêùÑñ Áá Éé Íí Óó Úú ¡ ¿ ª º ");
  11.     std::cin.ignore();
  12.     return 0;    
  13. }

Eso según creo solo arregla la salida.
No se si leer desde un archivo de texto lo hace bien, en todo caso había leído algo por la net que debéis guardar el archivo como UTF-8 o algo así, a mi no me hace falta por que si lo he visto bien. Ahora no lo voy a probar, luego lo hago o mejor lo hacéis vosotros XDDD
He sudado para encontrar eso -_-'
Por lo que se ve en windows 7, 8 y creo que versiones superiores a vista eso no hace falta. Pero soy primitivo, y mi ordenador aun es a leña XDD
¡Saludos!

Última edición por vangodp; 24/02/2014 a las 18:28

Etiquetas: acentos, funcion, int, lenguaje, programa, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:32.