Это объяснение strtok().
#include <string.h>
char* strtok( char* s1,
const char* s2 );*
Первый вызов strtok() возвращает указатель на первый токен в строка, на которую указывает s1. Последующие вызовы strtok() должны пройти NULL указатель как первый аргумент, чтобы получить следующий токен в строка.
Но я не знаю, почему вам нужно передать указатель NULL, чтобы получить следующий токен в строке. Я искал около 15 минут, но не нашел объяснений в Интернете.