-1

如何通过amqp (RabbitMQ) C 库char*发送长度?在所有样本中,他们使用类似while I have not null terminatestinge but a pair and its ?Namqp_basic_cstring(char*)char *length

4

2 回答 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 回答