Не используйте sprint_s
(или другое семейство форматных строк) в C ++.
Однако: одна из ваших ошибок в параметрах sprintf_s
:
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format [,
argument] ...
);
Пример от Microsoft:
// crt_sprintf_s.c
// This program uses sprintf_s to format various
// data and place them in the string named buffer.
//
#include <stdio.h>
int main( void )
{
char buffer[200], s[] = "computer", c = 'l';
int i = 35, j;
float fp = 1.7320534f;
// Format and print various data:
j = sprintf_s( buffer, 200, " String: %s\n", s );
j += sprintf_s( buffer + j, 200 - j, " Character: %c\n", c );
j += sprintf_s( buffer + j, 200 - j, " Integer: %d\n", i );
j += sprintf_s( buffer + j, 200 - j, " Real: %f\n", fp );
printf_s( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}
Также обратите внимание, что это расширение Microsoft. Компиляция той же программы с другим компилятором может закончиться неудачей.
А если серьезно, не используйте их вообще, просто сделайте:
std::stringstream ss;
ss << "d:/foobar.exe " << arg1 << ' ' << arg2;
const std::string command = ss.str();
На еще более серьезном замечании: приобретите хорошую вводную книгу по C ++ и не программируйте C, когда у вас есть C ++ на складе.