strtok () - почему вы должны передать нулевой указатель, чтобы получить следующий токен в строке?
это объяснение strtok ().
#include <string.h>
char* strtok( char* s1,
const char* s2 );*
первый вызов strtok () возвращает указатель на первый токен в строка, на которую указывает s1. Последующие вызовы strtok () должны передавать значение NULL указатель в качестве первого аргумента, чтобы получить следующий токен в строка.
но я не знаю, почему вы должны передать нулевой указатель, чтобы получить следующий токен в строке. Я искал около 15 минут, но не обнаружила объяснение в интернете.
2 ответов
strtok()
сохраняет некоторые данные в статических переменных внутри самой функции, чтобы она могла продолжить поиск с точки, оставленной ей предыдущим вызовом. Для сигнала strtok()
что вы хотите продолжать искать ту же строку, вы передаете NULL
указатель в качестве первого аргумента. strtok()
проверяет, является ли это NULL
и если это так,он использует свои сохраненные данные. Если первый параметр не равен null, он обрабатывается как новый поиск и все внутренние данные сбрасываются.
может быть лучшее, что вы можете сделать, это найти фактическую реализацию '; lastToken = tmp + 1; } else { /* Last segment, remember that. */ lastToken = NULL; } return s1; }
Если вы передаете ненулевое значение, вы просите его начать токенизацию другой строки.
Если вы передаете значение NULL, вы просите продолжить токенизацию того же, что и раньше.