Рассчитать длину аргументов Var Args в C - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь перенести asprintf() в Windows, поскольку это функция библиотеки GCC в Linux, а в Windows ее нет.

Я застрял при расчете длины var args, поэтомуЯ могу выделить память для них.Я попробовал два подхода:

  1. Записать аргументы var в файл, затем взять результат функции (который равен числу записанных байтов = длина аргумента var), но это глупо, посколькупользователь увидит внутренние случайные данные в своем приложении dir

  2. Используйте функцию vsprintf() с NULL в качестве первого параметра (переменная для записи вывода), чтобы она возвращала длину аргументов var, но этот не удался, потому что он работает только на XP, Windows 7 не позволяет записывать в переменную NULL.

Есть еще идеи о том, как решить эту проблему?

1 Ответ

5 голосов
/ 19 января 2011

Попробуйте использовать _vscprintf, вместо этого он возвращает только необходимое количество (не включая завершающий ноль)

...