打印/显示char *string
这是我的字符串
char *messageForServer = ("netsvr type0 dobrien %s- %s",inet_ntoa(clientAddr.sin_addr),port);
当我去打印时
printf("%s\n",messageForServer);
它只会打印字符串的port
部分。
对于任何帮助都会很有帮助,因为它困扰我好几个小时,似乎无法找到答案
答案 0 :(得分:1)
你应该这样做:
char messageForServer[100];
sprintf(messageForServer, "netsvr type0 dobrien %s- %s", "something", "8080");
printf("%s\n", messageForServer);
UPD:打印以下内容
netsvr type0 dobrien something- 8080
您的代码不起作用的原因是 - 嗯,您尝试获取格式化字符串的方式与C中的字符串格式无关。有关详细信息,请参阅Creating C formatted strings (not printing them)。
答案 1 :(得分:0)
在C中,可以通过分配字符串文字来创建和初始化char *
:
char *string = {"some text here"};
它无法理解您尝试过的初始化程序,
("netsvr type0 dobrien %s- %s",inet_ntoa(clientAddr.sin_addr),port);
至少有两个原因: 1)因为它包含多个文字字符串,而 2),( )
附件在语法上是错误的(使用而是{ }
。
如果你想创建一个由多个简单文本(即字符串文字)组成的字符串,比如说一个由两个字符串,一个整数和一个浮点数组成的字符串,你可以这样做:
char string [NUM_CHAR];
sprintf(string, "%s %d %s %f", "Example of string with ", 4, "elements, including the float:", 3.15);
答案 2 :(得分:0)
我认为您在这里要做的是提供一个可重复使用的功能,以便在代码中的各个点打印“服务器消息”。您可能会考虑这样做:定义messageForServer()
函数,而不是尝试预先格式化的字符串。
void messageForServer(char *msg, char *code)
{
printf("netsvr type0 dobrien %s - %s\n", msg, code);
}
简单。清洁。可重复使用的。