C/Visual C - como gestionar un txt

 
Vista:

como gestionar un txt

Publicado por el_increible_gabitinho (6 intervenciones) el 19/02/2007 13:57:29
hola
tengo un documento en .txt tal que:

a_1+a_2+a_3+a_4... no se cuado acaba, depende de otro programa que me genere dicho fichero.

me interesa coger cada vez a_i (siendo i del 1 al final...), y una vez que lo coja que lo borra; esto es:
si cojo a_1 que quede a_2+a_3+a_4
si cojo a_2 que quede a_3+a_4

que puedo hacer, para obtener la info del documento .txt usarla y luego borrarla?
muchas gracias
gabi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como gestionar un txt

Publicado por Nelek (816 intervenciones) el 19/02/2007 14:59:22
Mmmm,

En primer lugar, que hay en el txt exactamente? El valor final de la suma a_1+...+a_i? El texto que define la suma (es decir "i" elementos con su "i-1" simbolos de suma "+" entre medias)? Las variables sueltas (es decir de a_1 hasta a_i, sin nada entre medias? Que tipo de dato son los elementos a_i (int, double...)

Trabajas en C, C++, VC++, Borland...??

El como los quieres ir quitando... Es ordenado? (Es decir, leo el primero, borro el primero, leo el segundo, borro el segundo...). Se elige el elemento concreto? (Es decir, leo el elemento "j", borro l elemento "j"). Ha de ser el fichero entero? (Se va cogiendo y borrando desde el primero hasta el ultimo de un tiron)...

Depende de lo que sea cambiara.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por el_increible_gabitinho (6 intervenciones) el 19/02/2007 15:59:08
siento la falta de informacion; completo ahora:

dentro del txt hay una cadena de letras: a_1+a_2+a_3... pongo el mas para diferenciar cada paso: a_1, a_2,a_3... son ficheros generados por otro programa que cuando se ejecuta genera un a_i elemento que se añade a la cadena del txt.

me interesa coger cada vez a_i (siendo i del 1 al final...), y una vez que lo coja que lo borra; esto es:
si cojo a_1 que quede a_2+a_3+a_4
si cojo a_2 que quede a_3+a_4
siempre de forma ordenada, empiezo siempre por el de valor mas bajo: leo el primero, borro el primero, leo el segundo, borro el segundo... No se puede pasar al segundo sin haber borrado el primero

trabajo en C bajo linux.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por Tom (619 intervenciones) el 19/02/2007 16:59:48
Pues es una barbaridad, porque vas a estresar bastante el disco duro ... pero si lo quieres hacer así, allá tú :-)

Lee de tu fichero la primera cadena, por ejemplo a_1.
Guarda la posicion en el buffer obtenida con ftell() tras la lectura.
Escribe desde esa posición hasta el final de fichero en otro fichero temporal.
Renombra el fichero temporal al nombre de tu txt.

Esa forma de trabajar es muy, muy mala porque ¿qué pasaría si mientras el programa que añade cosas al txt está escribiendo en él, tu lo estás reeescribiendo al mismo tiempo?

Lo mejor que puedes hacer es buscar una manera más racional de hecer eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por el_increible_gabitinho (6 intervenciones) el 19/02/2007 17:25:51
yo creo que no hay problema de que ambos programas usen a la vez el txt

el primero genera el txt, y el segundo busca en la cadena de caracteres para saber cual tiene que usar.

eso seria lo bueno, pero y si se rompe la comunicacion entre ellos?? lo tengo hecho de forma que una vez reconectados, el segundo empieze por el que debia si no hubiera ocurrido ningun imprevisto.

pero leeria y borraria del fichero una vez que el otro haya cerrado dicho fichero, jamas los dos programas lo usarian a la vez

estoy probando por algo un poco reudimentario: calculo inicio (SEEK_SET) - fin de a_1 (SEEK_CUR) y fin de cadena (SEEK_END), y cambio el caracter de la posicion SEEK_CUR +1 por el primero, y asi sucesivamente.
de esta forma elimino a_1, y consigo que a_2 este al principio del txt

muy lioso? no se, por ahora es la mejor solucion que encontre

gracias por los comentarios, alguna idea mas?
gabi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por Nelek (816 intervenciones) el 20/02/2007 07:54:22
Conforme lo explicas... pues no, lo que te ha dicho Tom es lo que te hubiera dicho yo, pero menos impreciso que yo bajo UNIX nunca he programado y creo que no todos los comandos son iguales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por Tom (619 intervenciones) el 20/02/2007 14:27:42
Es que te explicas fatal, tron :-)
¿ realmente necesitas borrar cosas del fichero original ?
¿ Para qué, concretamente, necesitas que a_2 (o a_3 o el que sea) esté al principio del fichero ?

La mayoría de tus problemas se solucionan usando otro fichero, que tu segundo programa lee al empezar y escribe antes de finalizar. En ese fichero adicional puedes escribir algo así: a_15 256 (lo último que has leído ha sido 'a_15', en el offset 256).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por el_increible_gabiton (6 intervenciones) el 20/02/2007 16:52:32
hola

siento mi falta de verbo...

al final uso un fichero intermedio, escribo y borro en el. lo hecho en plan "pasiego", vamos que no es un codigo bonito de ver pero que funciona, por lo menos hasta ahora.

gracias por la ayuda, espero poder algun dia solucionar las dudas de alguién...
gabiton

p.d: si por lo menos programara bien |:-) .....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por Nelek (816 intervenciones) el 21/02/2007 08:42:05
No te desanimes, que yo tampoco soy ningun experto, como puedes observar, tengo tantos mensajes respondiendo como preguntando, nunca se deja de aprender y nunca se es suficientemente bueno para poder con todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como gestionar un txt

Publicado por Tom (619 intervenciones) el 21/02/2007 18:45:59
Pues ya sabes, si funciona ¡¡ no lo toques !! :-D

Ánimo y suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar