Строка символов (переставить слова в обратном порядке) - C (СИ)
Формулировка задачи:
Вводится строка состоящая из каких-либо слов,например:
My name is qwe.
Как поменять слова местами, чтобы получилось:
qwe is name My.
Все чего я смог добиться это поменять буквы местами.Советовали находить слова, то есть проверять наличие символов до пробела,но каким образом я должен переносить целое слово в другую строку,в правильном порядке и в нужное место,это возможно только посимвольно,но в таком случае это то же самое что делал я.Уже совсем отчаялся,есть идеи?
P.S. Первый курс,так что задача должна решаться на основе простейших функций.
Спасибо за ответ.Хороший форум
Решение задачи: «Строка символов (переставить слова в обратном порядке)»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "Eniki beniki eli vareniki", *p = str + strlen(str) - 1;
while (--p != str)
if (*p == ' ')
{
printf("%s ", p+1);
*p = '\0';
}
printf("%s", str);
return 0;
}
Объяснение кода листинга программы
В этом коде на языке C:
- Объявлена строка символов
strсо значениемEniki beniki eli vareniki. - Выделен указатель
pна последний символ строкиstr. - В цикле
whileпроисходит перебор символов строкиstrв обратном порядке. - Если текущий символ является пробелом (
*p == ' '), то:- В строку
printfвыводится следующая после пробела подстрока (p+1). - Пробел заменяется на нулевой символ (
*p = '\0').
- В строку
- После цикла выводится вся строка (
printf(%s, str). - Программа возвращает 0, заканчивая свою работу.