длина printf строки.
От: _Winnie Россия C++.freerun
Дата: 30.09.05 11:49
Оценка:
как посчитать в runtime длину результирующей строки? Нужна не строка, а только ее длина.

нужна функция вроде size_t countprintf(const char *format, ...);

assert(countprintf("%d", -1234) == 5);
Правильно работающая программа — просто частный случай Undefined Behavior
Re: длина printf строки.
От: _nn_ www.nemerleweb.com
Дата: 30.09.05 12:03
Оценка: 6 (1)
Здравствуйте, _Winnie, Вы писали:


_W>как посчитать в runtime длину результирующей строки? Нужна не строка, а только ее длина.


_W>нужна функция вроде size_t countprintf(const char *format, ...);


_W>assert(countprintf("%d", -1234) == 5);


Функции _vscprintf, _vscwprintf, правда это для VC.
Смотреть здесь
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: длина printf строки.
От: Анатолий Широков СССР  
Дата: 30.09.05 12:07
Оценка: 6 (1) +1
Здравствуйте, _Winnie, Вы писали:


_W>как посчитать в runtime длину результирующей строки? Нужна не строка, а только ее длина.


_W>нужна функция вроде size_t countprintf(const char *format, ...);



s[n]printf возвращает количество записанный символов.
Re[2]: длина printf строки.
От: gear nuke  
Дата: 30.09.05 20:50
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>s[n]printf возвращает количество записанный символов.


А printf разве не возвращает?
Или я не правильно вопрос понял
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: длина printf строки.
От: IROV..  
Дата: 30.09.05 21:06
Оценка:
Здравствуйте, _Winnie, Вы писали:


_W>как посчитать в runtime длину результирующей строки? Нужна не строка, а только ее длина.


_W>нужна функция вроде size_t countprintf(const char *format, ...);


_W>assert(countprintf("%d", -1234) == 5);


int Size = printf("%d", -1234);
я не волшебник, я только учусь!
Re[3]: длина printf строки.
От: Анатолий Широков СССР  
Дата: 30.09.05 21:10
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, Анатолий Широков, Вы писали:


АШ>>s[n]printf возвращает количество записанный символов.


GN>А printf разве не возвращает?


Возвращает, но выводит в стандартный поток вывода, что, видимо, недопустимо по условию задачи.
Re[4]: длина printf строки.
От: gear nuke  
Дата: 30.09.05 21:17
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>>>s[n]printf возвращает количество записанный символов.


GN>>А printf разве не возвращает?


АШ>Возвращает, но выводит в стандартный поток вывода, что, видимо, недопустимо по условию задачи.


Ага, похоже так и есть

Нужна не строка, а только ее длина

People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[2]: длина printf строки.
От: _Winnie Россия C++.freerun
Дата: 01.10.05 07:33
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, _Winnie, Вы писали:

АШ>s[n]printf возвращает количество записанный символов.

Угу. Вот так работает(во всяком случае под gcc):
size_t len = snprintf(0, 0, "%f", 1.234555555);

надо только проверить в msvc
Правильно работающая программа — просто частный случай Undefined Behavior
Re[3]: длина printf строки.
От: Анатолий Широков СССР  
Дата: 01.10.05 08:29
Оценка:
_W>надо только проверить в msvc

Неа, не пашет

size_t len = snprintf(0, 0, "%f", 1.234555555);


Я посмотрел, есть _scprintf, _scwprintf (Return the number of characters in the formatted string) и они, кстати, ANSI-шные — по идее, gcc должен их поддерживать.
Re[4]: длина printf строки.
От: Ovl Россия  
Дата: 03.10.05 08:34
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, gear nuke, Вы писали:


GN>>Здравствуйте, Анатолий Широков, Вы писали:


АШ>>>s[n]printf возвращает количество записанный символов.


GN>>А printf разве не возвращает?


АШ>Возвращает, но выводит в стандартный поток вывода, что, видимо, недопустимо по условию задачи.


ну, писать не только в стандартный можно
int written = fprintf( stderr, "...", ... )
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re[5]: длина printf строки.
От: Анатолий Широков СССР  
Дата: 03.10.05 08:39
Оценка: +1
АШ>>Возвращает, но выводит в стандартный поток вывода, что, видимо, недопустимо по условию задачи.

Ovl>ну, писать не только в стандартный можно

Ovl>
Ovl>int written = fprintf( stderr, "...", ... )
Ovl>


Лучше вообще не писать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.