我正在研究一个使用套接字的简单的Blackjack游戏,这是我操作系统类的礼貌.我们获得了一个套接字接口,它已经来回传递一个字符数组.
我希望我可以这样做:
char[] msgOut = printf("Dealer's Card is %C %C", char1, char2);
sendMsg(msgOut);
Run Code Online (Sandbox Code Playgroud)
然而,谷歌搜索引导我确定printf的返回值是Char的输出数量的int,而不是 chars本身的char [](正如我所希望的那样).
是否有另一个C函数可以让我从变量中构建字符串?
Ed *_* S. 29
printf写入标准输出.snprintf完成你在这里的目标.在调用snprintf之后,插值字符串存储在"缓冲区"中.您可能希望更智能地定义缓冲区大小,但这只是一个示例.
char buffer[1024];
snprintf(buffer, sizeof(buffer), "Dealer's Card is %C %C", char1, char2);
Run Code Online (Sandbox Code Playgroud)
eph*_*ent 10
Glibc(以及其他几个C库)具有便利功能asprintf.
char *msgOut;
asprintf(&msgOut, "Dealer's Card is %C %C", char1, char2);
sendMsg(msgOut);
free(msgOut);
Run Code Online (Sandbox Code Playgroud)
当您没有对保存字符串所需的内存量进行良好的预先预测时,这非常有用.(如果这样做,snprintf则开销较小,因为它不会动态分配内存.)
在没有asprintf但符合标准的系统上snprintf,它可以通过两次调用来实现snprintf- 首先没有缓冲区和零大小来确定字符串长度,干预malloc,然后第二次使用新分配的空间.