Как выполнить изменение предложения слово за словом в C?

#include <stdio.h>

int main(void)
{
  int i,j;
  int wordstart = -1;
  int wordend = -1;
  char words[]= "this is a test";
  char temp;

  // Reverse each word
  for (i = 0; i < strlen(words); ++i)
  {
    wordstart = -1;
    wordend = -1;
    if(words[i] != ' ') 
      wordstart = i;
    for (j = wordstart; j < strlen(words); ++j)
    {
      if(words[j] == ' ')
      {
        wordend = j - 1;
        break;
      }
    }
    if(wordend == -1)
      wordend = strlen(words);
    for (j = wordstart ; j <= (wordend - wordstart) / 2; ++j)
    {
      temp = words[j];
      words[j] = words[wordend - (j - wordstart)];
      words[wordend - (j - wordstart)] = temp;
    }
    i = wordend;
    printf("reversed string is %s:", words);
  }
}

Я пытался таким образом, но я получаю этот вывод:
siht is a test
мой ожидаемый результат:
test a is this

Я был бы признателен, если бы кто-то мог прийти с другим подходом, для которого временная сложность очень мала, или поправил бы меня, если это правильный подход. Спасибо

Ответы на вопрос(12)

Ваш ответ на вопрос