使用printf正确打印char中的参数,但不能写入

时间:2013-11-21 11:55:41

标签: c parameters printf

我有一个变量

char buffer[250] = "Your score is %d";

我打印就像

printf(buffer, 50);

显示Your score is 50

当我使用

write(connfg, buffer, 50);

要将其打印到客户端,它会显示%d而不是50

如何让它显示与带有printf的服务器相同的消息?

3 个答案:

答案 0 :(得分:1)

使用snprintf:

char buffer[250] =  "Your score is %d" ;
char temp[sizeof( buffer)] ;
snprintf( temp , sizeof( temp ) , buffer , 50 ) ;

printf("%s" , buffer ) ;

然后写缓冲区。

答案 1 :(得分:1)

printf()正确打印,因为它是一个包装函数,它在调用stdout上的写入之前执行所有格式转换

write()不会打印值,因为只需将缓冲区中的任何内容写入文件/设备文件,

对于您的信息,write()调用的第三个参数是要写入文件/设备文件的字节数。

答案 2 :(得分:0)

您也可以使用

#define SCORE "Your score is %d"

无论如何,我可以看到你为短信分配了大量内存。如果之后没有使用,您可以使用:

char buffer[] = "Your score is %d";