say24
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору А вот это - Цитата: Там нечего считать- берём 2 раза по максимальному значению %s'a | , во первых - ненадёжно (формат может оказаться крайне сложным (как у меня сейчас в реальной программе), а также мы можем и не знать максимальной длины %s), а во вторых - если речь, вдруг, идёт о массиве объектов класса (строка - в классе) с охерительной ёмкостью - получим таааакой расход памяти, что и на современном компе не влезет... В общем, как обычно - сам отвечаю на свой вопрос (накопал, с момента когда спрашивал ) : int _snprintf_s( char *buffer, size_t sizeOfBuffer, size_t count, const char *format [, argument] ... ); вместо числа знаков (count) можно писать _TRUNCATE, что аналогично (sizeOfBuffer-1), например: Код: errno = _snprintf_s(buffer, size_of_buffer, _TRUNCATE, "%d", MyCounter); | Итак: Код: char some_string[3]; int errno = _snprintf_s(some_string, 2, _TRUNCATE, "12"); printf("Error No: %d\n", errno); | И получаем, именно: Error No: -1 | Всего записей: 261 | Зарегистр. 18-02-2003 | Отправлено: 21:14 29-05-2013 | Исправлено: say24, 21:21 29-05-2013 |
|