Когда printf не распечатывается?

Функция printf в c не всегда выводит вывод на экран. Например, если вы забыли положить \n в конце строки, вы печатаете, вы иногда не получаете o/p. Существуют ли другие условия, когда printf не печатает. Я помню, как кто-то сказал, что есть 7 таких условий. Можете ли вы, ребята, помочь.

Ответ 1

Стандарт - это буферизованный поток, он не гарантированно скрывается, если не введена новая строка, поток закрыт или программа выходит из системы. Если программа выходит аномально, поток может не сливаться. Стандартная строка - буферизированная строка, поэтому новая строка будет скрыта. Буферы, которые не будут сливаться с новой линией.

Ответ 2

его не означает, что printf не всегда будет печатать, это значит, что он не гарантирует немедленную печать. Это означает, что если вы используете его для целей отладки, то вы не можете гарантировать, что это произойдет именно тогда, когда это произойдет в коде. Если вы хотите убедиться, что он печатает точно, когда вы сказали, что он звонит fflush(stdout).

Примечание.. Обычно вы не хотите использовать fflush(stdout), если вы не отлаживаете, его действительно ресурсоемкие, и если вы заботитесь о быстродействии, у него есть потенциал, чтобы замедлить работу.

Ответ 3

Есть еще один специальный случай, с которым я столкнулся:

Мои переменные:

line="-24 hours"
line2="24 hours"

и попробуйте

printf $line 
printf $line2

Ничего не получится. Второй снимет слово "часы", а первый ошибочно примет значение -24 как флаг.

Поэтому, когда я использую printf, я удалю все опасные символы, если это возможно, используя

sed -r "s/[/\ #;&~]/_/g"

Я хочу, чтобы разработчики могли улучшить код printf.

Позаботьтесь

Ответ 4

Как user1214634, stdout буферизуется и только на определенных условиях печатается на экране. Если вы хотите заставить его печатать, вы можете вызвать fflush (stdout)