我的sprintf_s功能有问题。我已声明变量 char postRequest [512] =“”;
现在我用这个函数来格式化我的变量:
sprintf_s(postRequest,
"GET /query/add.php?name=%s&port=%i&qport=%i&players=%i&maxplayers=%i HTTP/1.1\r\n"
"Content-Type: text/plain; charset=UTF-8\r\n"
"Host: xxxxxx-xxx.eu\r\n"
"\r\n", svrname, port, qport, 0, maxplayers);
变量svrname是std :: string,其他变量都是整数。 现在,端口的值为27015,qport为27016,maxplayers为32。 但这是我的问题,只有maxplayers在我的数据库上获得了32的价值。对不起我的英文,请看这张图片:http://prntscr.com/2gpa0b
此外,这是我的PHP脚本,用于处理将这些值添加到表:
$con = mysqli_connect("","","","");
ini_set("display_errors","on");
echo $_GET['port'];
mysqli_query($con,"INSERT INTO servers (name, port, maxplayers, players,ip, qport) VALUES('".$_GET['name']."','".$_GET['port']."','".$_GET['maxplayers']."','0','".$_SERVER['REMOTE_ADDR']."','".$_GET['qport']."')");
希望你知道我的意思。我已经在sprintf_s之前和之后的代码中检查了这些值,一切正常,所以我的代码中一定存在一些问题。
先谢谢。
FIXED: 好的,修好了。感谢帮助。 需要svrname.c_str()。
答案 0 :(得分:0)
使用%d
表示整数,%s
表示.c_str()
std::string
。
sprintf_s(postRequest,
"GET /query/add.php?name=%s&port=%d&qport=%d&players=%d&maxplayers=%d HTTP/1.1\r\n"
"Content-Type: text/plain; charset=UTF-8\r\n"
"Host: xxxxxx-xxx.eu\r\n"
"\r\n", svrname.c_str(), port, qport, 0, maxplayers);