Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
glaxe
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 3
#1

Не работает printf без \n в цикле for - C++

05.06.2010, 10:01. Просмотров 1938. Ответов 4
Метки нет (Все метки)

Вообще задача: выводить процент завершения процесса без перехода на новую строку и без мигания курсора.

В одной функции в цикле while такой вариант выводит:

C++
1
printf("\rREAD STRUCT: %-30s \t %.2f\tMB",Name,float32(nTotalByte)/1024/1024);
Но при этом мигающий прямоугольничик в консоле постоянно прыгает по строке (Как этого избежать?)

Другая проблема: в другой функции пишу цикл:

C++
1
2
3
4
5
6
7
8
9
10
for (uint32 iX = 0; iX < nXCell; iX++)
{
       printf("\rPERCENT DONE: %.2f\n",float32(iX+1)/nXCell*100);
       
       for (....................)
       {
          ................... //Разные вычисления по времени минимум около 8с
       }
}
printf("\n");
В строке вообще ни чего не выводит пока не дойдет до printf("\n");

Компилировать пробовал и без оптимизации и с оптимизацией.

Компилитор пробовал: g++, SunStudio12.1/c++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2010, 10:01     Не работает printf без \n в цикле for
Посмотрите здесь:

почему не работает printf? С++ C++
Printf не работает C++
Тупо не работает функция printf... C++
C++ Не работает printf в VS 2008
Вычислить значение выражения. Не работает printf C++
почему PRINTF не работает? C++
C++ Оптимизация. Что быстрее работает: cout или printf
Программа падает без printf C++
Как в цикле увеличить отступ в Printf C++
Не работает программа через printf и scanf C++
Функция printf () как это работает C++
C++ Можете переписать код без указаетелей и без printf\scanf?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17299 / 5547 / 347
Регистрация: 30.03.2009
Сообщений: 15,101
Записей в блоге: 26
05.06.2010, 10:19     Не работает printf без \n в цикле for #2
Цитата Сообщение от glaxe Посмотреть сообщение
В строке вообще ни чего не выводит пока не дойдет до printf("\n");
При работе printf строка вывода буфферизуется: т.е. пока не наткнулись на перевод строки или программа не завершила работу, реальная печать не происходит. В таких случаях нужно принудительно сбрасывать буффер: после printf'а добавь fflush (stdout);
glaxe
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 3
05.06.2010, 14:02  [ТС]     Не работает printf без \n в цикле for #3
Большое спасибо! Кстати теперь курсор не бегает по всей строке =),

ОДнако странно, что при цикле while вывод всетаки был
Evg
Эксперт CАвтор FAQ
17299 / 5547 / 347
Регистрация: 30.03.2009
Сообщений: 15,101
Записей в блоге: 26
05.06.2010, 14:55     Не работает printf без \n в цикле for #4
Цитата Сообщение от glaxe Посмотреть сообщение
ОДнако странно, что при цикле while вывод всетаки был
Забыл написать. Ещё один критерий, по которому сбрасывается буффер - это его заполнение. Т.е. если писать большой объём данных без перевода строки, то они будут сбрасываться кусками в размер буффера
glaxe
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 3
05.06.2010, 15:09  [ТС]     Не работает printf без \n в цикле for #5
Ясно, СПАСИБО!
Yandex
Объявления
05.06.2010, 15:09     Не работает printf без \n в цикле for
Ответ Создать тему
Опции темы

Текущее время: 04:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru