Я использую sprintf для создания массива char, который позже может быть записан как вызов системы.
char buffer[80];
char *ip = inet_ntoa(sa.sin_addr);
short port = 1;
sprintf(buffer, "Command with IP %s and port %d",ip, port);
system(buffer);
Теперь теоретически в этом буфере должно быть достаточно места для этой строки. Но почему-то из-за указателя на символ я все еще получаю * stack smashing detected *
как ошибка.
Не может ли sprintf обработать указатель на символ как входной, возможно, потому что он сам имеет большое распределение?
РЕДАКТИРОВАТЬ:
Оказывается, что буфер был маленьким, по крайней мере, для некоторых аргументов.
Поскольку у вас есть теги C ++, а не C, ваш код лучше написать так:
std::string ip = "0.0.0.0";
int port = 1;
std::ostringstream oss;
oss << "Command with IP: " << ip << " and port " << port;
system(oss.str().c_str());
Других решений пока нет …