Использование Borland C ++ Builder 2009
Я использую vswprintf для справки RAD Studio (F1):
int vswprintf(wchar_t *buffer, const wchar_t *format, va_list arglist);
До сих пор я всегда предоставлял большой буфер wchar_t OutputStr[1000]
и никогда не было проблем. В качестве теста и желая сделать действие по улучшению, я попробовал небольшой буфер wchar_t OutputStr[12]
и заметил, что программа полностью вылетает. Четное try{}catch(...){}
не ловит это Codeguard сообщает, что memcpy()
терпит неудачу, которая, кажется, внутренняя реализация. Я ожидал EOF
в качестве возвращаемого значения вместо.
При поиске в Интернете для vswprintf
Я считаю, что вариант c ++ принимает размер буфера в качестве входных данных, но я не могу убедить мой компилятор использовать этот вариант?
Есть идеи, как заставить его использовать BCB2009?
Весь смысл упражнения состоял в том, чтобы реализовать сценарий отступления, когда буфер слишком мал в возможно одной или двух странных ситуациях, чтобы я мог выделить больше памяти для функции и повторить попытку. Но этот механизм, похоже, не работает вообще.
Не знаете, как лучше всего проверить точное количество байтов / символов?
Ты можешь использовать vswprintf_s. Возвращает отрицательное значение при неудаче
Других решений пока нет …