Добрый день, помогите исправить пожалуйста.
программка должна менять местами первую и последнюю букву каждого слова и подсчитать сколько их всего
но она только подсчитывает количество слов. Что может быть не так?
#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;
}