如何使用amqp C库发送长度为N的字符*?

如何使用amqp C库发送长度为N的字符*?,c,rabbitmq,amqp,C,Rabbitmq,Amqp,如何发送长度为N的char*? 在所有示例中,它们都使用类似于amqp\u basic\u cstring(char*),而我没有以null结尾的Sting,而是一对char*及其长度?所有C字符串都以特殊字符'\0'结尾。如果您的N小于字符串的长度,您可以制作一个副本,然后在N位置终止它,并将其作为正常的C字符串发送。API中没有amqp\u basic\u cstring()我想您的意思是amqp\u cstring\u bytes()将C字符串包装在amqp\u t结构中,使用此函数时,必

如何发送长度为
N
char*

在所有示例中,它们都使用类似于
amqp\u basic\u cstring(char*)
,而我没有以null结尾的Sting,而是一对
char*
及其
长度

所有C字符串都以特殊字符
'\0'
结尾。如果您的
N
小于字符串的长度,您可以制作一个副本,然后在
N
位置终止它,并将其作为正常的C字符串发送。

API中没有
amqp\u basic\u cstring()
我想您的意思是
amqp\u cstring\u bytes()
将C字符串包装在
amqp\u t
结构中,使用此函数时,必须使用null终止字符串,因为它在内部使用
strlen()
对字符串进行计数,所以请分配一个额外的字节并使用null终止字符串

str[len-1]='\0';
另一个选项是自己将C字符串包装在
amqp\u byte\t
中,无论如何,我认为您不应该这样做:

amqp_bytes_t str;
str.len = length; //string length
str.bytes = cptr; //pointer to string

foo(..., str, ...);

哪里定义了
amqp\u basic\cstring
?它有什么作用?