Помогите перевернуть второе предложение на си
Нужно поменять местами слова в предложениях например: "Мама мыла пол. Папа читал газету." на "пол мыла Мама. газету читала Папа.", с перемещением слов в одном предложении справился, с несколькими не получается
#include <stdio.h>
#include <locale.h>
#include <Windows.h>
void reverse(char* begin, char* end) {
char temp;
while (begin < end) {
temp = *begin;
*begin++ = *end;
*end-- = temp;
}
}
void reverseWords(char* s) {
char* word_begin = s;
char* temp = s;
int x = 1;
while (x == 1) {
temp++;
if (*temp == ' ') { // если пробел
reverse(word_begin, temp - 1); // перевернуть слово до пробела
word_begin = temp + 1; // перейти к следующему слову
}
else if (*temp == '.') { // если конец строки
reverse(word_begin, temp-1); // перевернуть последнее слово
temp+=4;
reverse(s, temp-5); // перевернуть всю строку
temp-=2;
puts(temp);
x = 0;
}
}
}
int main() {
//system("chcp 65001");
setlocale(LC_ALL, "rus");
SetConsoleCP(1251); // включить кодировку Win1251 при вводе с консоли
SetConsoleOutputCP(1251); // включить кодировку Win1251 при выводе на консоли
char s[] = "Мама мыла пол. Папа читал газету.";
reverseWords(s); // перевернуть слова в предложении
//printf("%s\n", s); // напечатать результат
puts(s);
return 0;
}
Источник: Stack Overflow на русском