Естественно он не выводит в текстовый файл число 2386. Как сделать так чтоб он вывел в текстовый файл "2386"?
Можно взять ASCII таблицу где '0'-48, '9'-57, но я не знаю как сделать чтоб он таким образом переделал число 55 в символ "55".
// переводит целое число в строку std::string
std::string itoa (int n) {
char * s = new char[17];
std::string u;
// переводит в положительное число
if (n < 0)
{
n = (-1 * n);
u = "-"; // добавляет '-' в строку
}
int i=0;
do
{
s[i++]= n%10 + '0'; // приведение каждой цифры в char
n -= n%10; // обновление n
}
while ((n /= 10) > 0);
for (int j = i-1; j >= 0; j--)
{
u += s[j]; // построение строки
}
delete[] s; // освобождение памяти
return u;
}
Ребята, мы в теме "Погружение" -> "Программирование" или "В помощь начинающему"?
Я потому в размерности не поставил никаких цифирек, чтобы не было, как сказал коллега "от балды". Хотел поставить иксы, но посчитал, что это может вызвать больше флейма, а все равно напоролся. Если уйти от множества возможных вариантов, слов и обсуждений, то главное в моем предлоежении - не изобретать велосипед, а пользоваться существующими достижениями языка Си, а именно, форматтерами, что в Паскале, например, появилось на много позже. Это не оффтоп, я историческая справка, если автор темы захочет почитать вдруг Крнигана или Вирта, не приведи....
BratSinot, все нормально, не нужно расстраиваться, просто часто собеседники не знают уровень компетенции спрашивающего, поэтому и возникают подобные вопросы и советы.
Блин.... Чую решение на поверхности, а я лезу через тернии.
Мда, про посчитать я как-то не подумал... Значит, надо либо брать логарифм, либо вычислять 2^TYPE_MAX, либо брать заведомо больший буфер, закидывать в него sprintf'ом TYPE_MAX и вычислять длину полученной строки, а потом удалять буфер и создавать уже нужных размеров.
Кстати, есть еще такой вариант: strlen("TYPE_MAX"); может быть даже сработает.
Коллеги, а для чего, собственно, так сильно заморачиваться и путать автора темы? Разве задача пишется под ДОС, где каждый байт на счету? Лучше ввести переменную buf (имя неважно), размерностью с запасом на всё, что в коде еще может встретиться в будущем, чтобы в эту переменную можно было и стринги с пояснениями помещать. Поэтому и была предложена функция с форматтером, которая позволит добавлять пояснения, а не сухие цифры, например, для удобства "разбора полетов":
sprintf(buf,"В этом месте программы пременная tmp имеет значение %d",tmp);