Я использую swprintf для построения строки в буфере (среди прочего, используя цикл).
const int MaxStringLengthPerCharacter = 10 + 1;
wchar_t* pTmp = pBuffer;
for ( size_t i = 0; i < nNumPlayers ; ++i)
{
const int nPlayerId = GetPlayer(i);
const int nWritten = swprintf(pTmp, MaxStringLengthPerCharacter, TEXT("%d,"), nPlayerId);
assert(nWritten >= 0 );
pTmp += nWritten;
}
*pTaskPlayers = '\0';
Если во время тестирования assert никогда не срабатывает, могу ли я быть уверен, что оно никогда не попадет в живой код? То есть мне нужно проверить, если nWritten <0, и обработать это, или я могу смело предположить, что проблемы не будет? </p>
При каких обстоятельствах он может вернуть -1? В документации более или менее просто говорится «Если функция не работает». В одном месте я читал, что он потерпит неудачу, если не сможет сопоставить аргументы (то есть строку форматирования с переменными), но это меня не беспокоит.
Я также не беспокоюсь о переполнении буфера в этом случае - я знаю, что буфер достаточно большой.