Перевернуть каждое слово строки - C (СИ)
Формулировка задачи:
В записке слова зашифрованы — каждое из них записано наоборот. Расшифровать сообщение
Решение задачи: «Перевернуть каждое слово строки»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#define is_delim(c) (isspace((c)) || ispunct((c)))
char* words_rev(char* s){
char* _f, *_l, c, *t = s;
int n = 0;
do {
if(!is_delim(*s) && *s)
++n;
else if(n > 0){
for(_f = s - n, _l = s - 1; _f < _l; ++_f, --_l){
c = *_f;
*_f = *_l;
*_l = c;
}
n = 0;
}
} while(*s++ != '\0');
return t;
}
int main(void){
char s[] = "LPA, AVAJ, LREP, PSIL, HTROF.";
puts(s);
puts(words_rev(s));
getchar();
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и cctype.h
- Объявление функции words_rev, которая переворачивает строку
- Объявление переменной s, которая содержит исходную строку
- Вывод исходной строки на экран
- Вызов функции words_rev с передачей в нее исходной строки
- Вывод результата работы функции words_rev на экран
- Ввод символа конца строки с помощью функции getchar
- Возврат значения 0, что означает успешный конец работы программы