Как printf узнает об окончании токенов strtok во время их распечатки? - PullRequest
0 голосов
/ 24 декабря 2018

Я просто пытаюсь выяснить, что происходит в фоновом режиме, когда я токенизирую строку ac с помощью strtok и распечатываю токены с помощью printf с% s.

Так что это пример:

char str[] = "Where - is - the - end - of - tokens?";
const char s[2] = "-";
char *token;

/* get the first token */
token = strtok(str, s);

/* walk through other tokens */
while( token != NULL ) {
    printf( " %s\n", token );
    token = strtok(NULL, s);
}

return(0);

Мои убеждения: - strtok не создает копию данной строки c, просто возвращает адрес памяти первого символа данной строки c.- printf с% s будет печатать символы с адреса памяти до /0.

Мой вопрос следующий: Как printf знает, где прекратить печатать символы токена с% s?

Пожалуйста, помогите мне понять это поведение printf с% s.

1 Ответ

0 голосов
/ 02 января 2019

У меня есть ответ, который так прост: «Каждый разделитель заменяется нулевым символом».Источник: Документация IBM

...