Помните, что strtok
изменяет строку, помещая '\0'
символов после каждого токена.
Таким образом, когда вы снова пытаетесь токенизировать ту же строку, вы действительно токенизируете только первый токен.
Это приведет к тому, что второй p1 = strtok(NULL, " ");
вернет NULL
, а когда вы попытаетесь вывести p1, он попытается разыменовать NULL
и, возможно, потерпит неудачу.
Обратите внимание, что вам нужно использовать "%s"
вместо "%c"
, потому что вы печатаете строку, а не символ.