打印c字符串指针

时间:2014-11-17 20:09:48

标签: c string

打印/显示char *string

时遇到问题

这是我的字符串

    char *messageForServer = ("netsvr type0 dobrien %s- %s",inet_ntoa(clientAddr.sin_addr),port);

当我去打印时

printf("%s\n",messageForServer);

它只会打印字符串的port部分。 对于任何帮助都会很有帮助,因为它困扰我好几个小时,似乎无法找到答案

3 个答案:

答案 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);
}

简单。清洁。可重复使用的。