dziwne zachowanie strtoków

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);

tak na marginesie, to nie jest mój kod, tylko przykład tego, jak to jest określone

W moim programie, kiedy drukuję zmienną „token” zanim podzielę się po raz drugi, wydrukuje wszystko do momentu; postać.

Na przykład, powiedzmy stdIn wziął w „ls -la; mkdir lololol; ls -la”, wypisałby „ls -la”. Ale potem, po drugim podziale, wydrukowanie „tokena” spowoduje wydrukowanie tylko „ls”.

Dlaczego tak jest i jak mogę to naprawić?

questionAnswers(2)

yourAnswerToTheQuestion