Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/11/2015, 05:08
aitorqrv
 
Fecha de Ingreso: noviembre-2015
Mensajes: 3
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Sacar texto entre 2 palabras

Hola, muchas gracias, no avía caído en lo de separar por espacios. Menos mal que he consultado nuevamente el post, ya que los estaba haciendo con una serie de bucles que copiaban el texto entre ESC y CS, un jaleo.

Código:
#include <stdio.h>
#include <string.h>

int main()
{
    char s1[250] = "ESC 'D' CR ESC \"#000027D8\" CR ESC 'E' CR ";
    char s2[4] = " \n\t";
    char *ptr;
    
    printf( "s1=%s\n", s1 );
    
    ptr = strtok( s1, s2 );    // Primera llamada => Primer token
    printf( "%s\n", ptr );
    while( (ptr = strtok( NULL, s2 )) != NULL )    // Posteriores llamadas
        printf( "%s\n", ptr );
    
    return 0;
}
El resultado el que necesitaba:
s1=ESC 'D' CR ESC "#000027D8" CR ESC 'E' CR
ESC
'D'
CR
ESC
"#000027D8"
CR
ESC
'E'
CR
Program ended with exit code: 0

Con la última parte del código me pierdo un poco y no lo comprendo:

Código:
    ptr = strtok( s1, s2 );    // Primera llamada => Primer token
    printf( "%s\n", ptr );
    while( (ptr = strtok( NULL, s2 )) != NULL )    // Posteriores llamadas
        printf( "%s\n", ptr );
La explicación dice:
Cita:
Posteriores llamadas retornarán más tókens. Si ya no encuentra más delimitadores, entonces retornará todos los caracteres desde el último delimitador para ser el último token. Si ya se retornó el último token, entonces retornará un puntero nulo con demás llamadas a la función.
[URL="http://http://c.conclase.net/librerias/?ansifun=strtok"]http://http://c.conclase.net/librerias/?ansifun=strtok[/URL]

Un saludo y muchas gracias.