如何通过amqp (RabbitMQ) C 库char*
发送长度?在所有样本中,他们使用类似while I have not null terminatestinge but a pair and its ?N
amqp_basic_cstring(char*)
char *
length
问问题
235 次
2 回答
1
所有 C 字符串都以特殊字符 终止'\0'
。如果你N
的长度小于字符串的长度,你可以制作一个副本,然后在位置终止它N
并将其作为普通的 C 字符串发送。
于 2012-12-14T08:49:46.957 回答
1
API中没有amqp_basic_cstring()
,我认为您的意思amqp_cstring_bytes()
是将C字符串包装在amqp_t
结构中,使用此函数时必须对字符串进行空终止,因为它在strlen()
内部使用对字符串进行计数,因此分配一个额外的字节并以空终止字符串。
str[len-1]='\0';
另一种选择是将C字符串包装在amqp_byte_t
你自己中,无论如何我认为你不应该这样做:
amqp_bytes_t str;
str.len = length; //string length
str.bytes = cptr; //pointer to string
foo(..., str, ...);
于 2012-12-14T08:58:45.913 回答