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ć?