从C中的变量构建字符串

Rav*_*mer 16 c string printf

我正在研究一个使用套接字的简单的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,然后第二次使用新分配的空间.