Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ayuda con C

Estas en el tema de Ayuda con C en el foro de Programación General en Foros del Web. Hola. Nesesito un poco de ayuda con un programa que estoy haciendo. El problemas es que: Para empezar, estoy haciendo un editor de texto pero ...
  #1 (permalink)  
Antiguo 22/05/2003, 16:00
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Ayuda con C

Hola.

Nesesito un poco de ayuda con un programa que estoy haciendo.
El problemas es que: Para empezar, estoy haciendo un editor de texto pero se inclina hacia el html.

Ya casi quedo listo el programa pero cuando quiero escribir <, z, \ y otros caracteres no los escribe.

Pero si me fije que los caracteres eran especiales de C y por eso no los podia escribir asi porque si, entonces estoy buscando la forma de de escribir los caracteres.

Logicamente dirian. que con frpinf usara \\ para \ y asi, pero el problema es que es toda la cadena osea.

<html> y el resulatado es: html>
y quiero que cuando el usuario escriba <html>, <body>, zaz y <html><body>zaz se esciba talcual.


Espero que me puedan ayudar.
  #2 (permalink)  
Antiguo 25/05/2003, 14:01
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
uaaaaaaa

es increible!!!!!!!!!!1
Sera que nadie sabe???????????
sera que no quieren contestar???????????
no tengo un mejor foro a donde ir!!!!!!!!!!!!1
nesesito ayuda!!!!!!!!!!!!!!!
porque nadie dice nada!!!!!!!!!!!!11
de hecho casi nunca leeeen!!!!!!!1
  #3 (permalink)  
Antiguo 25/05/2003, 21:09
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
Pos segun entiendo lo que debes hacer a la hora de obtener la cadena en la variable es analizar esta buscando los caracteres que sean 'especiales' y sustituirlos de la forma correcta.
  #4 (permalink)  
Antiguo 26/05/2003, 08:49
 
Fecha de Ingreso: mayo-2002
Ubicación: Tijuana
Mensajes: 201
Antigüedad: 22 años
Puntos: 1
Busqueda

Oyes me gustaria ver el pedazo de codigo que usas para desplegar esos caracteres...

Asi puedo hacer unas pruebas con el, ademas que version del turbo c utilizas

Animo
  #5 (permalink)  
Antiguo 26/05/2003, 09:44
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
eso nos pasa a los C y C++'eros

Snif snif

Tienes razón, pero eso pasa por que el foro es mayormente fanático del VB, los que solemos usar C somos minoría.

Yo lo que haría es una rutina que analice cada caracter tecleado, de manera que si presiona \ en el momento de pintar en la pantalla pinte \\, pero que lo guarde sin el caracter de escape.

Me imagino algo como:
capturaCar(char &car){
switch(car){
case '\': printf("\\"); break; //solo pintados en la pantalla
case '/': printf("\/"; break;
.....
}
}

No se si te pueda servir o solo me fumé gachamente.

Saludos.
  #6 (permalink)  
Antiguo 26/05/2003, 11:34
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Gracias.......

me lo imagine........
Gracias a las personas que se molestaron por responderme.
Tenia esa idea pero justo cuanto ya habia puesto el post.
De todos modos. muchas gracias y espero que haya mas programadores del lenguaje C.
Ya se como:

char evaluar carácteres(contenido[])
{
for(int i=0; i<=strlen(contenido[]); i++)
{
switch(contenido[i])
{
case '<':
contenido[i]="\<";
break;

default:
;
}
}
return contenido;

}

Podria ser.

Corrijanme si estoy mal.

Última edición por Instru; 27/05/2003 a las 11:21
  #7 (permalink)  
Antiguo 27/05/2003, 09:47
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Creo que esta de más corregirte a estas alturas, necesitas empezar a programar y cuando te vuelvas a atorar podemos ver si te podemos ayudar.

Además de que la solución puede variar dependiendo del plantamiento que le des al programa.

Saludos
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #8 (permalink)  
Antiguo 27/05/2003, 11:22
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Ok

espero que no lo hayan dicho sarcasticamente,


Ya corregi algunos errores.



Otra alternativa de codigo es aceptada.
  #9 (permalink)  
Antiguo 27/05/2003, 11:44
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
No no te apures, no lo dije sarcásticamente, me disculpo si te sono ofensivo.

Saludos
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #10 (permalink)  
Antiguo 27/05/2003, 13:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Hace tiempo que no programo en C, pero veamos a ver si podemos ayudar. La cuestion es que como estoy un pelin descolocado, tendras que ayudarme a hacerme una idea de la situacion.

En primer lugar, ¿cual es el metodo que utilizas para sacar las cadenas por pantallas? Por cierto, ¿modo grafico (ventanas) o texto (consola)? ¿Se soluciona el problema poniendo el \? ¿Has probado a usar otra funcion para sacar los datos por pantalla?

En fin, espero poder ayudarte.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 27/05/2003, 15:51
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Gracias y aqui va.

Mithrandir te doy gracias por tu ayuda y tus comentarios.
esperemos que haya mas personas que les interese ayudar si.

Ok mi idea es una apkicacion de consola osea MS-Dos en mi maquina.
Lo compilo con visual C++ y con Dev C++, los dos compilan perfectamente.

El lenguaje es C.

Primero al elejir un nombre para la pagina, se crea un archivo temporal(eg: temp.tmp), luego por cada liena que el usuario introduzca, se escribe esta en el archvo temporal(mal escrito, por el mismo problema), luego al finalizar la edicion, se muestra todo el contenido del archivo, y si se desea cambiar algo.


Logicamente va a aparecer el texto mal porque aparte de lo ya comentado, tambien omite los caracteres de al final por ejemplo:


Si escribo:

abcd,
solo produce
abc.

No es en todos los casos, tal vez deba de reunir una lista de todos los caracteres que no se escriben.

Bueno, enfin...
Aldecir que si se va a guardar, todo lo del temp se guarda en otro archivo con al extension y el nombre que se le dio al principio.

Todo esto es aplicacion de consola, y solo uso las librerias
conio.h, stdio.h, stdlib.h y string.h.

Todas las utilizo.
Quise utilizar la funcion textcolor()
pero parece ser que en la biblioteca de estos compiladores no estan esas funciones, o simplemente funcionan diferente.

Espero y puedan decirme si el codigo pasado funcionara porque aun no lo he probado.

Saludos a todos
  #12 (permalink)  
Antiguo 28/05/2003, 09:57
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Supongo que lo que estas haciendo es guardar en un archivo cada caracter tecleado (y en el momento que se teclea) lo malo de eso es que si te equivocas, grabas la letra errónea, y al momento de que presionas [backspace] también se graba (\b), algo como:

mi casita pero en lugar de eso te eequivocas y escribesmi casito, corriges la o por la a tendrás en tu archivo algo como
mi casito\ba , que es lo que no quieres.

Lo que yo he escuchado que hace un editor serio es utilizar listas enlazadas, con un nodo por cada caracter. Siiii, te va a costar trabajo, pero creo que ya que lo tengas bien implementado el resto te será mucho más fácil, así tienes separado cada caracter y no necesitas usar un archivo temporal.

PD. Acuérdate que los caracteres especiales son un solo caracter, o dos, pejm. '\b' y no "\b".

Saludos
  #13 (permalink)  
Antiguo 28/05/2003, 11:38
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Nop

No, lo que hago es que cada linea se escriba, osea si quiere borrar puede hacerlo.


Lo de las listas enlazadas tengo ejemplos de como hacerlos.
  #14 (permalink)  
Antiguo 28/05/2003, 11:49
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
entonces es que cuando presiona [enter] se guarda la línea?
Si quiere corregir una línea anterior?

No se si te entendi mejor ahora, do todos modos te recomedaría que mejor te vayas por la opción de las listas.

Saludos
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #15 (permalink)  
Antiguo 29/05/2003, 16:21
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Ok, tengo ejemplos de listas

Nesesito un poco de explicacion de lo que hacen porque en el ejemplo que tengo , trabajan con una estructura de apuntadores y ufff, no le entiendo muy bien.

Si me pudieras explicar un poco no estaria aml.
Saludos
  #16 (permalink)  
Antiguo 30/05/2003, 09:14
 
Fecha de Ingreso: mayo-2002
Ubicación: Tijuana
Mensajes: 201
Antigüedad: 22 años
Puntos: 1
Oyes mira sobre listas enlazadas, por ahi hay un posteo:

http://www.forosdelweb.com/showthrea...ight=enlazadas

Ahora lo de las listas enlazadas no es un tema sencillo, son complejas, si quieres probar con ellas creo que debes detener tu proyecto un rato para que puedas probar con ellas. Ese sitio que pusieron en el posteo esta completo. Y si tienes que meterte con punteros , ya que es el fuerte de las listas enlazadas, no les tengas miedo ya que les agarres el rollo vas a querer usarlos en todos lados.

Si tienes alguna duda pues por aqui andamos.

Animo
  #17 (permalink)  
Antiguo 30/05/2003, 09:29
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Así es Instru, TIENES que aprender a usar listas, si estas estudiando programación, los apuntadores son el pan de cada día con el C.

Te recomendo que hagas programas para practicar con puros apuntadores y listas, ya que los domines, regrésate a tu editor.

Jeje, si piensas todavía en el juego, no te queda otra que convertirte en el master de los apuntadores, por que en un juego todo son apuntadores, listas, matemáticas y diversión (nadie dijo que los juegos eran fáciles), de hecho es una de las tareas de programación más complicadas.

Así que ponte a estudiar y practicar.
Saludos
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #18 (permalink)  
Antiguo 30/05/2003, 16:17
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Gracias

no se preocupen,
se manejar bien los apuntadores.
Y ahora tengo un libro que habla mucho sobre eso.
Solo que en otro libro que ya lei, venia un ejemplo de lista enlazada y me parecio una paradoja pero despues de leer bien el codigo estructurarlo y analizarlo parte por parte me di cuenta que no es tan dificil.

Yo estoy en 4 proyectos de juegos pero en flash.
Se mucho sobre javascript(mas que c) y como sabran javascript se asemeja mucho a actionscript entonces dos amigos y yo estamos en los proyectos.
Yo me encargo de la programacion y ellos de los diseños .

bueno.
De todos modos tengo que ver lo de las listas.
Si tengo dudas yo les avisera.
Gracias
Saludos
  #19 (permalink)  
Antiguo 05/06/2003, 15:57
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
OKOK

Bueno ya aprendi a hacer lists enlazadas, pero ahora como hago el editor con lists enlazadas?
Cada vez que se produsca un \b se borra una letra?
Pero se volveria a mostrar todo
Quiero que sea un editor mas enserio.
Pero se me acabo la imaginacion para mi editor, y no quiero dejar ese proyecto.
  #20 (permalink)  
Antiguo 05/06/2003, 16:06
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Cada caracter es un nodo de modo que para "vaca pinta" queda

NodoInicio->'v'->'a'->'c'->'a'->' '->'p'->'i'->'n'->'t'->'a'->NULL

Cuando el usuario presiona [backspace] lo que haces es eliminar el nodo:

NodoInicio->'v'->'a'->'c'->'a'->' '->'p'->'i'->'n'->'t'->NULL

Y así no importa donde esté el usuario, siempre puedes reenlazar tu lista.

Se me ocurre esto:

char captura(&car){
shitch(car){
case '\b': EliminaNodo(); break;
case '\\\': insertaNodo('\\\'); break;
...... //todos los cars especiales
default: insertaNodo(car); //todo lo demás
}
}

saludos
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #21 (permalink)  
Antiguo 06/06/2003, 11:30
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
me lo imagina.

Es loq ue intentaba decir en mi mensaje pasado.
Por lo qu veo tendra que ser asi, bueno asi se gana experiencia.
Pero aun tengo una duda.
Para mostrar como queda el texto tendria que repetirse todo, no?
osea
si se borra un caracter pues habria que mostrar toda la lista de nuevo para ver el resultado.
Y quiero tambien que pueda borrar algo de antes, osea de varios caracteres antes sin tener que borrar lo que se acaba de escribir.
Me imagino que con las direcciones de los apuntadores.
Si hay otra solucion para eso, podria decirmelo?
Porque la verdad hay que saber de todo para hacerlo de varias formas por si una no funciona, intentar otra. No?
Bueno eso es todo .
Gracias y saludos.
  #22 (permalink)  
Antiguo 06/06/2003, 11:45
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Si, lo mas sencillo es reimprimir toda la lista, aunque si solo fuera el ultimo, puedes capturar el caracter '\b', borrar el nodo, y pintar '\b' en la pantalla, esto te borra el último caracter.

Y si, supongo que para desplazarte en el texto también te tienes que desplazar entre la lista.

Saludos
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #23 (permalink)  
Antiguo 06/06/2003, 20:51
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
...

Pero no habra una manera mas "mejor"?
Porque no es muy presentable tener que mostrar toda la lista.
Es un poco complicado pero solo asi se aprende bien
con experiencia
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 17:12.