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

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

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

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

05.06.2010, 10:01. Просмотров 2004. Ответов 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 (C++):

Как в цикле увеличить отступ в Printf - C++
как в цикле с помощью переменной, в нашем случае, цифра &quot;5&quot; (5 пробелов отступ) увеличивалась в цикле? ...

Можете переписать код без указаетелей и без printf\scanf? - C++
#include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; int main() { srand((unsigned)time(NULL)); ...

Программа падает без printf - C++
Пишу простую программу, которая в цикле запускает другую, меняя один из аргументов от нуля до 700. Два одинаковых варианта, с printf...

Printf не работает - C++
Здравствуйте. В такой вот, пародии на программку последний printf ничего не выводит. Только начал изучать C++. Подкажите в чём может быть...

почему не работает printf? С++ - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; void main() { int colPos, rowPos; int i, j, k, razm; ...

почему PRINTF не работает? - C++
есть файл с следующим содержаним: aa fr ab ty ac qw .. az re нужно найти в этом файле комбинацию ab и во второй файл записать 2...

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

ОДнако странно, что при цикле while вывод всетаки был
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,156
Записей в блоге: 26
05.06.2010, 14:55 #4
Цитата Сообщение от glaxe Посмотреть сообщение
ОДнако странно, что при цикле while вывод всетаки был
Забыл написать. Ещё один критерий, по которому сбрасывается буффер - это его заполнение. Т.е. если писать большой объём данных без перевода строки, то они будут сбрасываться кусками в размер буффера
glaxe
0 / 0 / 0
Регистрация: 05.06.2010
Сообщений: 3
05.06.2010, 15:09  [ТС] #5
Ясно, СПАСИБО!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2010, 15:09
Привет! Вот еще темы с ответами:

Не работает printf в VS 2008 - C++
Здравствуйте . Написал несколько небольших проектов на С в VS2008 ,и нигде в окне не выводится результат, хотя компилятор пишет ошибок...

Тупо не работает функция printf... - C++
BCB 5.0 нормально программу компилирует и выполняет - никаких ошибок нет - а сообщение через функцию printf на принтер не выходит......

Не работает программа через printf и scanf - C++
Нужно написать программу, которая бы выводила таблицу через printf и scanf, которые бы находились в циклах и данные заносились бы в массивы...

Вычислить значение выражения. Не работает printf - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main () { float x,k,y; const int T=4; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.06.2010, 15:09
Ответ Создать тему
Опции темы

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