elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
07 Julio 2008, 01:46  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  Engorrosa lectura de archivos de texto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Engorrosa lectura de archivos de texto  (Leído 142 veces)
fabre
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil
Engorrosa lectura de archivos de texto
« en: 14 Mayo 2008, 22:11 »

Hola gente escribo aca por un problema que tengo con un trabajo para la facultad.
Tengo que hacer un catalogador de noticias, que levante de un directorio muchas noticias (archivos de texto) las meta en conjuntos, cree un indice de busqueda, etc etc
La parte importante, osea las estructuras de datos, los algoritmos de busqueda ya los hice y pareciera que esta todo bien, mi problema esta en la parte mas baja del programa, obtener la informacion de los archivos de texto.
Supuestamente es la parte mas facil y se espera que se haga con funciones simples.
Unos ejemplos de noticas:
Citar
<titulo>Article 900</titulo>

<etiquetas>business development free gallery maps mp3 programming recipes research statistics teaching wordpress </etiquetas>

<contenido>Aquí va el contenido...
.....................................................................
.....................................................................
.....................................................................
.....................................................................
</contenido>
Citar
<titulo>Article 906</titulo>

<etiquetas>environment,gallery,graphics,home,howto,humor </etiquetas>

<contenido>Aquí va el contenido...
.....................................................................
.....................................................................
.....................................................................
.....................................................................
</contenido>
La unica forma que se me ocurre es ir leyendo caracter por caracter con fgetc, mi problema viene para ir armando cadena cuyo tamaño final desconozco caracter por caracter??? despues deberia ver que dice la cadena, hacer mi trabajo, liberar la memoria esa para volver a almacenar otra cadena...
No me puedo imaginar ninguna forma de hacer esto correcta y prolijamente.

Toda la parte de algoritmia y eficiencia me encanta, pero estas cosas de laburo a bajo nivel con cadenas me dan ganas de suicidarme.
Alguna idea?
Porque yo ya tengo un tremendo dolor de cabeza!
En línea
ghastlyX
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1.584


No es posible conseguir nada sin arriesgarse algo


Ver Perfil
Re: Engorrosa lectura de archivos de texto
« Respuesta #1 en: 14 Mayo 2008, 22:25 »

Si te he entendido bien tu problema es como tratar la cadena final si el tamaño de esta lo desconoces. Si es eso, usa string, que es muy cómodo:
Código
[...]
#include <string>
using namespace std;
[...]
 
string cadena;
char caracter;
 
[...] //Lo que tengas que hacer para coger cada carácter
 
cadena.push_back(caracter)  //Con push_back añades un carácter al final de la cadena
 
[...]

Un saludo de ghastlyX ;)
En línea
sangano
*
Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Engorrosa lectura de archivos de texto
« Respuesta #2 en: 14 Mayo 2008, 22:54 »

Tu archivo de texto como ejemplo parece un xml, no??, o al menos se parece.

 Lo que haria seria tratar de leer una linea completa y luego "parsearla" tratando de identifiar las los tags <title></tile>, etc, obtener la data dentro de estas y segun eso ir llenando las estructuras que se tienen como modelo de datos.

Código
int main()
{
char linea[100];
FILE * archivo;
archivo = fopen("datos.txt", "r");
if(archivo == NULL)
{
printf("no se puede leer el archivo\n");
return -1;
}
 
while(!feof(archivo))
{
fscanf(archivo, "%s", linea);
               //hacer algo con la info, "parsearla" y/o guardar en estructuras.
printf("%s\n", linea);
}
 
fclose(archivo);
 
return 0;
}
 

por lo que recuerdo fscanf, lee hasta le salto de linea, creo que asi seria mas facil de manejar la info.

 Si tu archivo fuera un xml, seria mucho mas facil, utilizar alguna libraria para C que manejara xml y listo.

saludos.
En línea
fabre
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Engorrosa lectura de archivos de texto
« Respuesta #3 en: 15 Mayo 2008, 19:09 »

Aja! lo del string.pushback es lo que buscaba gracias ghastlyX

Sangano, el tema con las lineas es que se me complica para tomar deciciones sobre el formato que tienen. Y no es xml, es un codigo inventado imitando un supuesto xml.

Gracias, despues me pongo a codificar y veo que pasa!
Saludos
En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  








Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC