comportamiento extraño strtok

char line[255];
char *token = NULL;
char *line2 = NULL;
char *temporaryToken = NULL;

if( scanf(" %[^\n]", line) > 0)
    token = strtok( line, ";" ); //divide the line by ;
    do
    {
        line2 = token;
        temporaryToken = strtok(line2, " ");
        do
        {
            //divide the line2 by spaces into command and args, not the question here]
            temporaryToken = strtok( NULL, " " );
        }while (temporaryToken != NULL );
        token = strtok( NULL, ";" );
    }while(token != NULL);

Este no es mi código textual, por cierto, solo un ejemplo de cómo se establece.

En mi programa, cuando imprimo la variable "token" antes de dividir por segunda vez, imprimirá todo hasta que aparezca; personaje.

Por ejemplo, digamos que stdIn tomó "ls -la; mkdir lololol; ls -la", imprimiría "ls -la". Pero luego, después de la segunda división, imprimir "token" solo imprimiría "ls".

¿Por qué es esto, y cómo podría arreglarlo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta