LINUX.ORG.RU

в чистом C : sprintf (а лучше snprintf)

MKuznetsov ★★★★★
()

ещё есть не совсем стандартная, но достаточно распространённая функция asprintf(), которая сама выделяет необходимую память под стринг.

bbk123 ★★★★★
()

если нужен именно стринг, а не массив символов не известного размера, то:

std::string NumberToString(int value ){
std::ostringstream ostrm;
ostrm << value;
return ostrm.str();
}

ale ★★
()
Ответ на: комментарий от ale

Массив символов, оканчивающийся '\0' - это и есть стринг. Размер стринга возвращается всеми функциями семейcтва sprintf(). И вопрос всё таки касался C, а не C++.

bbk123 ★★★★★
()
Ответ на: комментарий от bbk123

>Размер стринга возвращается всеми функциями семейcтва sprintf()

но до этого необходимо было переслать sizeof(buf), а сколько нужно 30 символов или 1 или больше (ну мало ли =) )?

не может ли здесь быть потенциальное переполнение буфера?

ale ★★
()
Ответ на: комментарий от ale

snprintf() в качестве одного из параметров принимает размер буфера.
asprintf() сама выделяет столько памяти, сколько нужно.
Откуда взяться переполнению?

bbk123 ★★★★★
()
Ответ на: комментарий от ale

> std::string NumberToString(int value ){
> std::ostringstream ostrm;
> ostrm << value;
> return ostrm.str();
> }

немного офтопа, но все написано до нас - boost::lexical_cast

aton
()

а есть какая-нить функция перевода числа в строку, например, 3578 -> "three thousand five hundred and seventy eight"? я написал свою, но она не универсальная:-(

record ★★★★★
()
Ответ на: комментарий от bbk123

>Есть программа:

1.Cпасибо.
2.Скомпилировал.
3.Работает.
(Правда пропускает AND'ы,надо так: 345 = "three hundred AND forty five".
1001 = "one thousand AND one")
4.Попробую подправить
5.goto 1.

record ★★★★★
()
Ответ на: комментарий от bbk123

В классическлм британском английском употребление and обязательно перед десятками, в американском - факультативно.

record ★★★★★
()
Ответ на: комментарий от record

>5.goto 1.
Извините, что вмешиваюсь, но goto, видимо, не совсем то, что имелось ввиду? Может #include ? :) А то так до скончания веков компилить придётся. :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.