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.