我有一个变量
char buffer[250] = "Your score is %d";
我打印就像
printf(buffer, 50);
显示Your score is 50
当我使用
时write(connfg, buffer, 50);
要将其打印到客户端,它会显示%d
而不是50
如何让它显示与带有printf的服务器相同的消息?
答案 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";