Strtok сохраняет статический буфер при токенизации, который перезаписывается при вызове в другом месте с новой строкой, отличной от NULL, что может нарушить требуемую функциональность. например переплетенные звонки с разными строками.
Вместо этого вы можете использовать strsep, который похож на strtok, но вы сохраняете временный буфер самостоятельно, на случай, если вам понадобится токенизировать несколько строк, например, с переплетенными вызовами с разными строками.
В небольших случаях эта проблема, вероятно, не возникнет, но может и в более крупных проектах.
РЕДАКТИРОВАТЬ: это не стандарт c, поэтому убедитесь, что у вас есть эта функция, прежде чем пытаться ее использовать. Я точно знаю, что он доступен на BSD и, возможно, на других Unix
РЕДАКТИРОВАТЬ: strsep и strtok_r имеют одинаковую функциональность