Я пытаюсь понять, почему следующий фрагмент кода дает ошибку сегментации:
void tokenize(char* line)
{
char* cmd = strtok(line," ");
while (cmd != NULL)
{
printf ("%s\n",cmd);
cmd = strtok(NULL, " ");
}
}
int main(void)
{
tokenize("this is a test");
}
Я знаю, что strtok() фактически не tokenize в строковых литералах, но в этом случае line
указывает непосредственно на строку "this is a test"
, которая внутренне является массивом char
. Есть ли какой-либо токенизирующий line
без копирования его в массив?