Для пользователей, которые регистрируются. Если Вам не приходит письмо с подтверждением email, пишите на admin[at]quizful[dot]net - будем подтверждать вручную. Просим прощения за доставленные неудобства.

С уважением,
команда Quizful
Знаете ли Вы, что

В разделе "Статьи" можно найти обучающие статьи по информационным технологиям, а также узнать о новостях сервиса Quizful.

Топ контрибуторов
loading
loading
Лента обновлений
ссылка May 17 19:13
Комментарий от elirijndael:
Полностью согласен с valid_name.
ссылка May 17 18:47
Комментарий от Aleksandr89:
Неплохой тест. Для тех кто хочет ещё попрактиковатьс...
ссылка May 17 15:13
Комментарий от dpdpdp:
Поменяйте радиокнопки на чекбоксы.
Во втором варианте про...
ссылка May 17 11:55
Комментарий от Torredo812:
вот это подвох!!!
забываешь что х увеличился))и думае...
ссылка May 17 10:50
Комментарий от lesha1980:
Хороший вопрос. Получается, что проверяется только x в...
Статистика

Тестов: 130, вопросов: 5791. Пройдено: 126748 / 526541.

Альтернативы sprintf

Автор: QQQ  к списку      

Вопрос
Перечислите слабые и сильные стороны функции sprintf, а также перечислите ее альтернативы.
Ответ

sprintf(char* buf,format,int chislo); используется для преобразования целого числа в удобочитаемое строковое представление(можно сказать-является аналогом char *itoa(value,string,radix), которая возвращает указатель на преобразованную строку).

Положительные стороны: работа без динамического выделения памяти, возвращает количество записанных-преобразованных символов, удобно использовать, если преобразованные данные необходимо использовать несколько раз.

Недостатки: скорость действия, в некоторых случаях переполнение буфера, как вариант можно найти альтернативную замену:

1) snprintf(buf,buflen,format,chislo); (небольшой "+" наличие длины буфера-buflen);

2) как вариант можно использовать std::strstream следующим образом("-" достаточно громоздко):


ostrstream temp(buf,buflen);
temp<<setw(int)<<chislo<<ends;
//setw-для форматного вывода программы, например setw(4)...
3) lexical_cast - предназначен для конвертирования данных из 1-го типа в другой(больше всего нравится по удобству):
Сразу пример использования:

string& s;
int i;
s = lexical_cast<string>(i);
Маленький вывод: у каждого метода есть свои недостатки(быстродействие, удобство, семантика, рациональное-нерациональное использование памяти...) и свои плюсы, поэтому использование того или иного метода зависит только от Вашего выбора. Необходимо лишь отметить, что лучше все же искать альтернативу (замену sprintf) и использовать данную функцию реже (так как любое нерационально использование данных может привести к переполнению буфера, а неверно указанный формат приведет к ошибке - поиск которой может затянуться на неопределенный промежуток времени).

Если Вам понравился вопрос, проголосуйте за него

Голосов: 2  loading...
darkerow   art