Не работают printf в одном потоке

У меня есть проект, в котором нужно, что бы печатало несколько printf в одном потоке. Я столкнулся с проблемой, что захватывается только самый последний printf. Перепробовал несколько вариантов fflush, но безуспешно.

Код для теста:

#include <thread>

int main(){

for (int i=0;i<10;i++){
//...
for(int x = 1; x<10; x++){
    printf("\rValue of I is: %d", i);

    //fflush(stdout);
    printf("\rValue of X is: %d", x);
    
//...
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
system ("pause");
return 0;

}

Печатается только второй printf

Что я делаю не так? И как правильно нужно делать? Я хочу, что бы оба вывода изменялись в этой же строке. За ранее спасибо за подсказку.


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

Автор решения: gbg

Попробую угадать - вы пишете "\r blablabla"

Но \r - это команда возврат каретки, она перегоняет курсор в начало строки. Две выведенные вами строки сливаются в одну.

Нужно это поправить, например, убрав \r во втором printf

После этого, можно исправить вторую проблему - поставить fflush(stdout); непосредственно перед sleep()

→ Ссылка