Не работают 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;
}
Что я делаю не так? И как правильно нужно делать? Я хочу, что бы оба вывода изменялись в этой же строке. За ранее спасибо за подсказку.
Ответы (1 шт):
Попробую угадать - вы пишете "\r blablabla"
Но \r - это команда возврат каретки, она перегоняет курсор в начало строки. Две выведенные вами строки сливаются в одну.
Нужно это поправить, например, убрав \r во втором printf
После этого, можно исправить вторую проблему - поставить fflush(stdout); непосредственно перед sleep()
