[C con Clase] Almacenar texto de longitud indefinida

Programante programante en gmail.com
Sab Nov 10 16:14:37 CET 2007


Paco Quintana escribió:
> Hola a todos. Soy usuario de C++ traajo con Dev-cpp y estoy planteandome 
> un programa que sea el tipico fichero donde leer registros, 
> modificarlos, añadir al fichero etc
> Mi problema surge que un campo es de texto pero que creceria cada vez un 
> pco mas.
>   
El problema no es que cada vez crezca un poco más, sino que no tiene 
tamaño máximo (de lo contrario, le ponemos al campo el tamaño máximo).
> Ejemplo Programa simple de fichero para una consulta medica
> Los campos serian el nombre del paciente, su ffecha de nacimiento, 
> telefono localidad etc... en definitiva datos administrativos que 
> podrian ser los datos miembro de longitud fija de una clase Paciente. El 
> ultimo campo seria de tratamiento y este es el que me plantea dudas pues 
> tiene que crecer con cada visita posterior del paciente. Como edito esa 
> variable en pantalla (hablamos en modo consola) y como la almaceno ? en 
> un fichero aparte con una referenciaa cada enfermo y dia de consulta ? 
> Como la edito en pantalla ? Uno o dos ficheros, todos los campos 
> formando parte de los datos miembro de la clase paciente o el campo 
> tratamiento seria uno de los datos miembro de una nueva clase llamada 
> evolucion junto con un long que fuera el numero de orden del paciente en 
> el fichero de la clase paciente.
> Espero vuestras ideas....
> Afectuosamente
> Francisco
>   
La forma más simple sería almacenar para el campo tratamiento el nombre 
de un archivo de texto (que crearías de forma única) donde guardar el 
tratamiento.

Si buscas algo más sofisticado, entonces podrías guardar un offset a un 
segundo fichero en el cual estarían los datos por bloques, con un 
formato similar a este:
struct { int Siguiente; char Contenido[1020]; } Cuando llenes Contenido 
para un tratamiento, estableces Siguiente a un nuevo bloque y sigues 
allí. Luego la aplicación une y separa los textos para editarlos de 
forma transparente.





Más información sobre la lista de distribución Cconclase