Как поставить пробел после запятой в строке?

Нужно вставить 1 пробел после каждой запятой, если он отсутствует перед следующим словом. У меня есть код, но он ожидаемо не работает

#include <cstring>
#include <iostream>
int main() {
char sentence[256];
printf("Введіть текст: ");
fgets(sentence, sizeof(sentence), stdin);
for (int i = 0; i < strlen(sentence); i++) {
  if (sentence[i] == ',' && sentence[i++] != ' ') {
  sentence[i] = sentence[i + 1];
  sentence[i++] = ' ';
}
}
printf("\nВаш редагований текст: %s", sentence);
return 0;
}

Ответы (2 шт):

Автор решения: Bloody.cpp

Это уже не C++, а C какой-то. Забудьте про printf() и fgets(), в C++ используют cout и cin. Используйте класс std::string. Почитайте это Кляц, а после уберите i++ где оно не нужно, заменив на i + 1

#include <iostream>
#include <string>
#include <Windows.h>

using namespace std;

int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    string usrStr;
    string finStr;
    cout << "Введите текст: " << endl;
    getline(cin, usrStr);
    for (size_t x = 0; x < usrStr.length(); x++)
    {
        if (usrStr[x] == ',')
        {
            if (usrStr.length() <= x + 1)
            {
                finStr += ',';
                break;
            }
            if (usrStr[x + 1] != ' ')
            {
                finStr += ", ";
            }
            else
            {
                finStr += ',';
            }
        }
        else
        {
            finStr += usrStr[x];
        }
    }
    cout << "Ред. строка: " << finStr << endl;
    system("pause");
    return 0;
}

Ввод: I,Love, C++

Вывод: I, Love, C++

→ Ссылка
Автор решения: Harry

Как сдвинуть массив? Примерно так:

#include <cstring>
#include <iostream>
int main()
{
    char sentence[256];
    printf("Введiть текст: ");
    fgets(sentence, sizeof(sentence), stdin);

    for (int i = 0; i < strlen(sentence); i++)
    {
        if (sentence[i] == ',' && sentence[i+1] != ' ')
        {
            for(int j = strlen(sentence)+1; j > i; --j)
                sentence[j] = sentence[j-1];

            sentence[i+1] = ' ';
        }
    }
    printf("\nВаш редагований текст: %s", sentence);
    return 0;
}

В принципе нужна еще проверка, что места в массиве для сдвига хватит, но это уж подумайте сами...

→ Ссылка