| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > sprintf и нулевой символ |
| Автор: Fedor 6.1.2007, 13:57 | ||
Рассмотрим простенький примерчик:
Компилим например в cc, gcc, xLc, etc. В случае printf нулевой символ пропускается, и слово Test выводится на ура. В случае sprintf, нулевой символ пишется в buf, и соответственно на экран все что за ним не выводится. В общем, что сие? Почему различия в поведении? Баг, фича, что-то еще? В стандарте С что-нибудь сказано по сему поводу? |
| Автор: Sartorius 6.1.2007, 14:06 |
| ИМХО не баг и не фича. В первом случае format string должна пропарситься целиком, независимо от того , что будет выводиться. А во втором случае - нопмальный вывод zerro-string . Усе логично. ЗЫ не следует думать, что при printf сначала формируется где то буффер , содержащий вывод, а потом выводится эта строка |
| Автор: WERITAS 6.1.2007, 14:14 | ||
Все правильно! На то он и нулевой символ. printf выводит строчку на экран. Там не обрывается вывод. Так и надо. А в другом случае sprintf копирует в буфер. Т.е. ты конец строки вставил в начало строки, поэтому ничего и не выводится. О5 опередили! |
| Автор: Fedor 6.1.2007, 15:08 |
| Sartorius, WERITAS, W4FhLF, всем спасибо. Логику осознал. |