Foros del Web » Programación para mayores de 30 ;) » C/C++ »

En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas

Estas en el tema de En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas en el foro de C/C++ en Foros del Web. El título es algo caótico pero no se como expresarlo mejor, lo siento... Os expongo lo que quiero tengo un texto: prefijo zxxadasdasdasddwqd sufijo esta ...
  #1 (permalink)  
Antiguo 03/06/2011, 10:01
Avatar de jayjayjay_92  
Fecha de Ingreso: octubre-2008
Mensajes: 77
Antigüedad: 15 años, 6 meses
Puntos: 0
En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas

El título es algo caótico pero no se como expresarlo mejor, lo siento...

Os expongo lo que quiero

tengo un texto:

prefijo zxxadasdasdasddwqd sufijo
esta linea se ignora
esta tambien se ignora pero el texto es diferente
prefijo zxxadasdasdasQd asd sufijo
prefijo nv c,vzmcxlalcklcsa d sufijo
prefijo zxx·"1312321dxdwqd sufijo

De cada linea de este texto tengo que sacar todo lo que hay entre ell prefijo y el sufijo almacenarlo en un array de modo que quede:

cadena [1] = zxxadasdasdasddwqd
cadena [2] = zxxadasdasdasQd asd
cadena [3] = nv c,vzmcxlalcklcsa d
cadena [4] = zxx·"1312321dxdwqd

Supongo que será bastante sencillito pero no teno ni idea de como se hace.
La parte complicada es que todo el texto me lo devuelve una funcion del sistema usando system(''). Se hacerlo alamacenando la cadena en un archivo temporal pero si puedo evitarlo mejor.
  #2 (permalink)  
Antiguo 03/06/2011, 10:48
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Respuesta: En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas

No entiendo bien que quieres hacer... Podrías explicarte mejor... porfavor?

Supongo que lo que quieres es primero tener un array algo así:

char cadena[20] = "asdfHOLAasdf";

y de ahí sacar solo la palabra HOLA (en este caso)... quieres hacer algo así? O no te entiendo...

Gracias!

Saludos!
  #3 (permalink)  
Antiguo 03/06/2011, 12:19
Avatar de jayjayjay_92  
Fecha de Ingreso: octubre-2008
Mensajes: 77
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas

Exacto, el problema es que desconozco tanto el contenido como el tamaño de lo que va entre asdf y asdf.

Creo que ya he encontrado la solución y cuando la tenga testada la publico.

Y gracias por responder!
  #4 (permalink)  
Antiguo 03/06/2011, 19:09
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas

el prefijo y el sufijo es siempre el mismo??
  #5 (permalink)  
Antiguo 04/06/2011, 09:39
Avatar de jayjayjay_92  
Fecha de Ingreso: octubre-2008
Mensajes: 77
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas

Si, de cualquier modo estoy casi seguro de que mañana lo posteo.
  #6 (permalink)  
Antiguo 04/06/2011, 09:57
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: En una cadena, encontrar dos cadenas y sacar el texto que hay entre ambas

Si el prefijo y sufijo es fijo aca tienes un viejo truco:

Código C:
Ver original
  1. #include <string.h>
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.     char pre[10] = "pp";
  7.     char post[10] = "tt";
  8.     char cadena[100] = "ppholacomoandadstt";
  9.     char * c = cadena;
  10.     c += strlen(pre);
  11.     c[strlen(c) - strlen(post)] = '\0';
  12.     printf("%s\n",c);
  13.     return 0;
  14.  
  15. }

En vez de un printf puedes usar un strcpy para copiarlo a otra array y ya te queda solucionado.

Etiquetas: cadenas, encontrar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:11.