sprintf_s生成随机数

sprintf_s generates random number

本文关键字:随机数 sprintf      更新时间:2023-10-16

我对sprintf_s函数有问题。我声明了变量 字符后请求[512] = ";

现在我用这个函数来格式化我的变量:

sprintf_s(postRequest,
"GET /query/add.php?name=%s&port=%i&qport=%i&players=%i&maxplayers=%i HTTP/1.1rn"
"Content-Type: text/plain; charset=UTF-8rn"
"Host: xxxxxx-xxx.eurn"
"rn", svrname, port, qport, 0, maxplayers);

变量 svrname 是 std::string,其他变量都是整数。现在,端口的值为 27015,qport 为 27016,最大播放器为 32。但这是我的问题,只有最大玩家在我的数据库上获得了值 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之前和之后检查了代码中的这些值,一切都很好,所以我的代码中一定存在一些问题。

谢谢转发。

固定:好的,固定的。感谢您的帮助。需要svrname.c_str()。

使用 %d 表示整数,%s 表示std::string.c_str()

sprintf_s(postRequest,
 "GET /query/add.php?name=%s&port=%d&qport=%d&players=%d&maxplayers=%d HTTP/1.1rn"
 "Content-Type: text/plain; charset=UTF-8rn"
 "Host: xxxxxx-xxx.eurn"
 "rn", svrname.c_str(), port, qport, 0, maxplayers);