/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Identificar el caracter © en C

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
cosmefulanito04



Registrado: 19 Sep 2006
Mensajes: 23

MensajePublicado: 20/03/2008 12:31 am
Título: Identificar el caracter © en C

Bueno creo q el titulo lo resume todo, estoy haciendo un programa como utilidad para las calculadoras texas (Ti-89t, v200, etc) y me encontre con un problema, necesito identificar el caracter "©" q no se encuentra en la tabla ascii, y la verdad no tengo idea q puedo hacer.

En estos momentos utilizo el TurboC 3.0 (see ese viejito, pero q todavia tira) y tb uso el Turboc 4.5 (ese ya tiene soporte de windows, aunke igual sigue siendo viejo).

La verdad es q intente usar el dev-c y no cazaba una, me tiraba errores por cualkier cosa, como el "clrscr()" (hasta q descubri q no lo tiene en la libreria "coni.h"), pero ademas me saltaba errores rarisimos, como q la funcion principal debia devolver un "int" si o si, a pesar de q hice incampie q era void, asi q termine desintalandolo de la bronca.

Bue espero q alguien pueda ayudarme con el bendito "©", a ver q se puede hacer.
Volver arriba
_Martin_



Registrado: 03 Ago 2006
Mensajes: 208

MensajePublicado: 20/03/2008 5:38 am
Título:

Hola, con respecto a tu problema la verdad es que si el caracter no se encuentra en la tabla ASCII, no se como podras imprimirlo (suponiendo que estas usando las librerias estandar).

Con respecto a la funcion "main" esta DEBE retornar un tipo int y DEBE recibir como argumento "int argc, char *argv[]" (aunque tengo entendido que el nombre argc y argv pueden ser cambiados).
Existen ciertos compiladores que permiten otras declaraciones pero estas NO son estandar y varia de un compilador a otro. En otras palabras, no era culpa del Dev-c.

Saludos
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7527
Ubicación: Mexico

MensajePublicado: 20/03/2008 7:54 am
Título:

El problema con caracteres que no forman parte de juego de caracteres ASCII como el que tu mencionas (y tambien con las vocales acentuadas y similares) se debe (usualmente) al uso de diferentes entornos.

Me explico: cuando se desarrolla un programa en C se tienen dos entornos que no necesariamente son identicos. El primero es el entorno de compilacion y esto incluye la edicion de codigo fuente (en tu caso los IDEs que mencionas) y el otro entorno es el entorno de ejecucion donde (sorpresa!) se ejecuta la aplicacion (mencionas que es una calculadora de TI).

El porque ciertos caracteres se presentan correctamente en un entorno y no en el otro se debe a que los juegos de caracteres utilizados por los entornos no son identicos. Por ejemplo una queja muy comun es que en Dev-C++ usualmente cuando se utilizan las vocales acentuadas estas se presentan correctamente pero cuando se ejecuta el programa en la consola se muestra basura.

La solucion mas sencilla en tu caso es revisar la documentacion de esas calculadoras para conocer el valor numerico de ese caracter e indicarlo en base 16 en tu programa en la forma '\xNN', por ejemplo:
Código:
/* Si el valor es 192 utilizariamos */
putchar('\xC0');

/* O tambien */
printf("El caracter problematico es \xC0 \n");


Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
cosmefulanito04



Registrado: 19 Sep 2006
Mensajes: 23

MensajePublicado: 20/03/2008 2:16 pm
Título:

rir3760 escribió:
.....

La solucion mas sencilla en tu caso es revisar la documentacion de esas calculadoras para conocer el valor numerico de ese caracter e indicarlo en base 16 en tu programa en la forma '\xNN', por ejemplo:
Código:
/* Si el valor es 192 utilizariamos */
putchar('\xC0');

/* O tambien */
printf("El caracter problematico es \xC0 \n");


Un saludo


Ojo, q el programa es una utilidad para estas calculadoras, pero el programa es para Windows/Dos, lo uniko q hace es comprimir los archivos de una forma muy basica.

Los programas hechos en Ti-basic (lenguaje de la calculadora) para este tipo de calculadoras, son por ejemplo de este tipo:
Código:

()
prgm
local aux
input aux

if aux=1 then
  pause "Ingreso 1" 
elseif aux=2 then
  pause "Ingreso 2"
elseif aux>=2 then
  pause "Ingreso un nº mayor a 2"
endif
disphome
endprgm


El programa ese, si lo paso a un txt y usando el programa en C q hice, me lo transforma a esto:

Código:

():prgm:local aux:input aux:if aux=1 then:pause "Ingreso 1":elseif aux=2 then:pause "Ingreso 2":elseif aux>=2 then:pause "Ingreso un nº mayor a 2":endif:disphome:endprgm


Los ":" sirven para separar la linea de codigo, y por mas simple q suene, haciendo esta tonteria se logra reducir bastante el peso del programa, eliminando todos los espacios en blancos. El problema esta en q el caracter "©" en Ti-basic se usa para hacer comentarios (tipo un "//" o "/*" en C), y si no elimino esos comentarios, todo lo q vaya despues de ese caracter kedara como un comentario, osea q el programa a comprimir deja de funcionar. Hasta ahora la unika forma de q no haya problema es q el usuario elimine de forma manual todos los comentarios y recien ahi utilizar esta herramienta.
Volver arriba
cosmefulanito04



Registrado: 19 Sep 2006
Mensajes: 23

MensajePublicado: 21/03/2008 11:26 am
Título:

Bue al final la solucion no era tan complicada, el caracter se encontraba en la tabla ascii extendida caracter 169, es raro pero en las tablas q yo habia buscado no aparecia, al final decidi imprimir todos los caracteres del 1 al 255, y al parecer lo acepta el compilador q estoy usando q trabaja bajo windows turbo c++ 4.5.

Les agradezco la ayuda .
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 1001
Ubicación: Blumenau (Br)

MensajePublicado: 21/03/2008 11:47 am
Título:

Creo que la solución sería que utilices alguna librería de C que forme parte del entorno Ti-Voyager 200 (o similares) en la cual te dé la posibilidad de imprimir el carácter especial "©". Desarrolla y compila tu programa C utilizando un compilador/emulador específco para esa calculadora en tu PC y listo. Investiga el tema en la página oficial de Texas Instruments.
Como tú bien dices, para el lenguaje Ti-Basic no existe problema alguno para imprimir esos caracteres especiales.

Un saludo
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com