• Sábado 9 de Noviembre de 2024, 03:29

Autor Tema:  Mostrar Un Numero De Lineas Determinado!  (Leído 1503 veces)

jesusfd

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Mostrar Un Numero De Lineas Determinado!
« en: Domingo 26 de Diciembre de 2004, 19:26 »
0
Hola de nuevo. Necesito saber que tengo que hacer para lo siguiente:

tengo una serie de mensajes(sí los del buzón mail en unix) y cada uno tiene una cabecera y un cuerpo de esta manera separados:

From .......................
..............................     CABECERA
..............................

hola que tal estas hoy
yo estoy bien pero me   CUERPO
preocupas tu!:).

From...............     SIGUIENTE MENSAJE

lo que hice, ha sido leer el archivo y almacenarlo en un buffer de caracteres. y ahora me piden desarrollar la orden TOP pasandola así:
ej:
TOP 2 10    (siendo 2 el numero de mensaje y 10 el numero de lineas del cuerpo que quiero mostrar).

Como puedo hacerlo para mostrar la cabecera del mensaje que me piden y a continuación las líneas que me digan del mensaje???

He intentado recorrer el bufer y almacenarlo hasta en contrar i=\n && i+1=\r,...y de más formas, pero siempre me lo hace mal!!:(

Alguién me da alguna solución!!

GRACIAS!

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Mostrar Un Numero De Lineas Determinado!
« Respuesta #1 en: Lunes 27 de Diciembre de 2004, 00:29 »
0
¿Has probado a usar las funciones fscanf, fprintf y compañía? Si no recuerdo mal, son muy útiles para leer buferes establaciendo un determinado formado.

Por ejemplo:
Código: Text
  1.  
  2. char cabecera[200];
  3. FILE *f
  4.  
  5. f = open...
  6.  
  7. fscanf(f, "FROM: %s\n", cabecera);
  8.  
  9.  

Te leería la cabecera del primer mensaje.

Prueba a ver si te resulta útil.

Nos vemos :hola:
Core Dumped
zirrus.es

jesusfd

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Mostrar Un Numero De Lineas Determinado!
« Respuesta #2 en: Martes 28 de Diciembre de 2004, 19:35 »
0
Ahora lo pruebo..pero si no uso esas funciones es porque guardé todos los mensajes en un buffer temporal para no "hurgar" en el archivo directamente!....Como cojería por ejemplo la cabecera de un mensaje mas las 5 primeras lineas de este?

Gracias! :rolleyes:

además, la cabecera se compone de muchas lineas y no solo una!
es así:
From'  '...............\n
..........................\n
..........................\n
...etc...................\n
\n
.....mensaje.........\n
..........................\n
\n
From '  '........... y así para todos los mensajes que haya!

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Mostrar Un Numero De Lineas Determinado!
« Respuesta #3 en: Martes 28 de Diciembre de 2004, 19:54 »
0
Ok, si no quieres urgar en el fichero, puedes usar sscanf, que forma parte de la familia y en vez de necesitar un puntero a FILE necesita un puntero a char.

¿Quieres leer la cabecera y 5 lineas del mensaje? Prueba esto:
Código: Text
  1.  
  2. sscanf(cadena, "FROM:%s\n\n%s\n%s\n%s\n%s\n%s\n", cabecera, linea1, linea2, linea3, linea4);
  3.  
  4.  

No se si irá, ahora mismo no puedo probarlo, pero es lo primero que se me ha ocurrido y creo que es ilustrativo.

Ya nos cuentas.

Nos vemos :hola:
Core Dumped
zirrus.es

jesusfd

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Mostrar Un Numero De Lineas Determinado!
« Respuesta #4 en: Jueves 30 de Diciembre de 2004, 20:27 »
0
Gracias cirrus, ya lo he resuelto!!.....
Nos vemos!
por cierto... necesito funciones que hagan operaciones sobre numeros complejos!....si tienes algo de eso..mandamelo!  jesusfdmadfactory@hotmail.com

Lo postearé en un nuevo mensaje! bye B)