c strtok возвращает NULL после возврата из рекурсии

Когда я не вызываю одну и ту же функцию в своем коде, все работает хорошо, но когда функция возвращается из рекурсии внезапно, переменная pch имеет значение NULL:

  void someFunction() { char * pch; char tempDependencies[100*64+100]; strcpy(tempDependencies,map[j].filesNeeded); pch = strtok(tempDependencies,","); while (pch != NULL) { someFunction(); <- if i comment this out it works fine pch = strtok (NULL, ","); } } 

Так, например, когда цикл действует на строку file2,file3,file4 он правильно разделяет file2 и изменяет строку на file2\\000file3,file4 но следующий вызов pch = strtok (NULL, ","); делает pch равным 0x0 . Есть ли вещи, о которых я не знаю при вызове рекурсии?

strtok() не является реентерабельным. Если вы хотите использовать его в рекурсивной функции, вы должны использовать strtok_r() .

Смотрите также: strtok, strtok_r

Вы не можете вызвать функцию strtok раз до того, как будет выполнено предыдущее выполнение. Это не реентерабельно .

strtok_r этого используйте его strtok_r версию strtok_r .