Язык Си. Нжен совет с кодом

Добрый день, помогите исправить пожалуйста.
программка должна менять местами первую и последнюю букву каждого слова и подсчитать сколько их всего
но она только подсчитывает количество слов. Что может быть не так?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
char * swap(const char* vs char*);
 
int main(void)
{
    char s[200];
    int count = 0, i;
    printf("Enter the string:\n");
    scanf("%[^\n]s", s);
    for (i = 0;s[i] != '\0';i++)
 
    {
        if (s[i] == ' ' && s[i+1] != ' ')
            count++;   
    }
    printf("words: %d\n", count + 1);
    
 
    printf("%s\n", swap(s));
 
 
}
 
char * swap(char * s)
{
    const size_t length = strlen(s);
    char * ch = malloc(length + 1);
 
    strncat(ch, s, length);
    ch[length] = '\0';
 
    char * k = ch;
 
    while (k != NULL)
    {
        char * last = strchr(k, ' ');
 
        if (last != NULL)
        {
            char t = *k;
            *k = *(last - 1);
            *(last - 1) = t;
            k = last + 1;
        }
        else
        {
            char t = *(k);
            *k = *(ch + length - 1);
            *(ch + length - 1) = t;
            k = NULL;
        }
    }
 
    return ch;
}

Так а компилятор не говорит что ли, что тут явно что-то не то?)

Нет, просто запускает программу и считает слова

Ну хотя бы на вкладке предупреждений должно что-то быть )

https://onlinegdb.com/nVRmdnZMG

    6 | char * swap(const char* vs char*);
      |                            ^~~~
main.c: In function ‘main’:
main.c:23:20: warning: implicit declaration of function ‘swap’ [-Wimplicit-function-declaration]
   23 |     printf("%s\n", swap(s));
      |                    ^~~~
main.c:23:14: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
   23 |     printf("%s\n", swap(s));
      |             ~^     ~~~~~~~
      |              |     |
      |              |     int
      |              char *
      |             %d
main.c: At top level:
main.c:28:8: error: conflicting types for ‘swap’
   28 | char * swap(char * s)
      |        ^~~~
main.c:23:20: note: previous implicit declaration of ‘swap’ was here
   23 |     printf("%s\n", swap(s));
      |                    ^~~~

Да, есть подобное. А что с этим не так, как исправить?

уже все исправил, заработало, спасибо за помощь