Строка символов (переставить слова в обратном порядке) - 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, заканчивая свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д