Что не так с этим элементарным алгоритмом?

Решаю легчайшую задачу задачу с сайта, где нужно одни символы заменить на другие, сделал всё правильно, но оно не работает. Условие: введите сюда описание изображения

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>

using namespace std;
int main() {
    char stR[25000];
    char b;
    bool block = 0;
    while (gets_s(stR))
    {
        for (int i = 0; i < strlen(stR); i++)
        {
            if (stR[i] == '/' and stR[i + 1] == '/') block = 1;
             while (stR[i] == '-' and stR[i + 1] == '>' and block !=1)
        {
            i += 2;
            cout << ".";
        }
            cout << stR[i];
        }
        cout << endl;
        block = 0;
    }
}

Пытался делать и через getline и стринг, и через gets и char,всё неработает, что там, что там проходит только 2 теста из 7. Проверял тестовыми данными, всё работает отлично. Так же убирал cout << endl; и ставил 2 таких, ничего не помогает. Что можно сделать ? Сайт с задачей: https://www.e-olymp.com/ru/problems/506


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

Автор решения: Harry
#include <string>
#include <iostream>
#include <iomanip>

using namespace std;


int main()
{
    string s;
    while(getline(cin,s))
    {
        string body = s, comment = "";
        size_t p;
        if ((p = s.find("//")) != s.npos)
        {
            body = s.substr(0,p);
            comment = s.substr(p);
        }
        while((p = body.find("->")) != body.npos)
            body.replace(p,2,".");
        cout << body << comment << "\n";
    }
}
→ Ссылка
Автор решения: MBo
cout << stR[i];

выполняется безусловно, выводя - от второй стрелки ->->

if (block != 1 and stR[i] == '-' and stR[i + 1] == '>')  {
    cout << '.';
    i++;
}
else
    cout << stR[i];
→ Ссылка