Простой способ: используйте strtok () или strtok_r, чтобы получить первые два токена, которые будут удалять их из строки, поэтому сама строка будет вашим третьим токеном, который вы искали.
Сложный путь: разберись сам: (
Strtok находится в библиотеке C-строк и изменяет исходную строку, поэтому будьте осторожны, сначала скопируйте строку, если она должна остаться нетронутой.
Возможный пример:
//#include <string.h>
char input[] ="first second third forth";
char delimiter[] = " ";
char *firstWord, *secondWord, *remainder, *context;
int inputLength = strlen(input);
char *inputCopy = (char*) calloc(inputLength + 1, sizeof(char));
strncpy(inputCopy, input, inputLength);
firstWord = strtok_r (inputCopy, delimiter, &context);
secondWord = strtok_r (NULL, delimiter, &context);
remainder = context;
printf("%s\n", firstWord);
printf("%s\n", secondWord);
printf("%s\n", remainder);
getchar();
free(inputCopy);
Это должно работать очень хорошо и быть безопасным для потоков с исходной строкой без изменений.