Непонятки со sprintf_s
От: Барбос  
Дата: 18.08.09 13:21
Оценка:
Суть. Есть структура, std-список:
struct tS
{
    char s[16];
    time_t lt;
    double b;
    double a;
    bool isUpdated;
};
// ...
std::list<tS> m_s;


Есть код:
    for(std::list<tS>::iterator i = m_s.begin(); i != m_s.end(); i++)
    {
        char buf[1024];
        ZeroMemory(buf, sizeof(buf));
        time(&i->lt);
        sprintf_s(buf, "%s %d %.5f %.5f\r\n", i->s, i->lt, i->b, i->a);
    }


Все члены структуры имеют значение: s — терминированная строка, a,b,lt — положительные.
После выделенного фрагмента в buf появляется какая-то ересь типа:
TEXT 1250600722 17673093451837795000000000...много-много-нулей...0000000.00000 -0.00000

Если попробовать переставить в sprintf_s порядок:
sprintf_s(buf, "%s %.5f %.5f %d\r\n", i->s, i->b, i->a, i->lt);

то все ок:
TEXT 0.70665 0.70765 1250600907

В чем проблема?
VS2008 SP.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.