如何使用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
?它有什么作用?