| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
cosmefulanito04
Registrado: 19 Sep 2006 Mensajes: 23
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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)
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |