Buscar string en un archivo, y obtener datos

Iniciado por emma1990, 21 Marzo 2011, 20:02 PM

0 Miembros y 1 Visitante están viendo este tema.

emma1990

Hola!

No me vendría mal un poco de ayuda con un programa que estoy haciendo ;D.

La historia consiste en que el programa abra un archivo de texto y busque una cadena, grabando lo que hay después de la cadena a otro archivo de texto.

Es decir, que si en el archivo input.txt hay esto: "blablabla nombre emma blablabla", obtenga un output.txt con el contenido "emma".

Soy bastante principiante en esto, pero sí sé abrir y cerrar archivos. Donde necesitaría ayuda es con lo demás

Alguna idea?

Gracias de antemano!  :laugh:

El_Java

Mira en esta página de la wikipedia con info sobre el string.h :P
http://es.wikipedia.org/wiki/String.h
Si quieres más información busca en la pagina de cplusplus (buscalo asi en google), y coloca en el buscador de la pagina el nombre de la funcion que quieras (esta en ingles todo)

emma1990

Hola El_java, gracias por contestar!  :D
he visto esas funciones, pero el problema es que necesito orientarlo a lectura de archivos. En concreto, tengo que manejar archivos de varios cientos de kb..  :-\

Akai

Si la velocidad es un factor crítico, te puedo sugerir que utilices mapeo en memoria.

Tienes mmap para linux:
http://linux.die.net/man/2/mmap

Y en windows el equivalente, si no me equivoco es CreateFileMapping:
http://msdn.microsoft.com/en-us/library/aa366537(v=VS.85).aspx

Únicamente puedo hablar del mmap de linux, que es el que he usado, y para ficheros grandes, se suele experimentar una ganancia en la lectura. Ya que en vez de ir leyendo el fichero a bloques lo transportas a memoria de una, y luego lo recorres como si se tratase de una CADENA. No es algo que aconseje a alguien que está empezando.

Recalco lo de tratarlo como una cadena, porque eso te permite acceder al elemento que quieras, cuando quieras, Por tanto, si tu buscas un patrón en un texto (suponiendo que buscas un único patrón), después de mapear el fichero, se me ocurre que puedas recorrerlo del tirón buscando la primera letra de tu patrón, que la encuentras, compruebas si después está la segunda, que no? sigues.

Respecto a la velocidad... el uso que yo le he llegado a dar es leer 92 archivos de entre 1.5 y 2 MB cada uno, y pasar su contenido a una matriz (leía como texto, y luego pasaba a número, y no lo podía mapear directamente como números por tratarse de un fichero de texto, no binario)
189 MB en 2 segundos con mi portátil (pentium T4300)