Суть. Есть структура, 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.