Выделить отдельные слова строки и записать их в обратном порядке - C (СИ)
Формулировка задачи:
Задано строку из трех слов. Выделить отдельные слова и записать их в обратном порядке. Вывести преобразованную строку на экран.
Решение задачи: «Выделить отдельные слова строки и записать их в обратном порядке»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
//-----------------------------------------------------------------------------
void Swap(char* a, char* b)
{
char tmp = *a;
*a = *b;
*b = tmp;
}
//-----------------------------------------------------------------------------
void Reverse(char* begin, char* end)
{
while (begin < end)
{
Swap(begin++, end--);
}
}
//-----------------------------------------------------------------------------
void ReverseAllWords(char* text)
{
char* begin;
while (*text)
{
for (; *text && isspace(*text); ++text) { ; }
begin = text;
for (; *text && !isspace(*text); ++text) { ; }
if (begin < text)
{
Reverse(begin, text - 1);
}
}
}
//-----------------------------------------------------------------------------
int main()
{
char text[256] = {'\0'};
printf("input text: ");
fgets(text, sizeof(text) - 1, stdin);
ReverseAllWords(text);
printf("result: %s", text);
return 0;
}