길이가 인 char*
을 amqp (RabbitMQ) C library 이상으로 보냅니 까? 모든 샘플에서 그들은 amqp_basic_cstring(char*)
과 같은 것을 사용합니다. 그러나 null을 끝내지는 못했지만, char *
과 그 length
쌍을 사용합니까?amqp C 라이브러리를 사용하여 길이 N의 char *을 보내는 방법은 무엇입니까?
-1
A
답변
1
모든 C 문자열은 특수 문자 '\0'
로 끝납니다. N
이 문자열의 길이보다 작은 경우 복사본을 만든 다음 N
위치에서 종료하고 일반 C 문자열로 보낼 수 있습니다. 이 API에는 amqp_basic_cstring()
가 없습니다
1
, 나는 당신이 amqp_t
구조의 C - 문자열을 감싸는 amqp_cstring_bytes()
을 의미 생각, 그렇게, 그것은 문자열을 계산하기 위해 내부적으로 strlen()
를 사용하기 때문에이 기능을 사용하여 문자열을 NULL로 종료해야 여분의 바이트를 할당하고 문자열을 Null 종료하십시오.
amqp_bytes_t str;
str.len = length; //string length
str.bytes = cptr; //pointer to string
foo(..., str, ...);
어디'amqp_basic_cstring'가 정의 :
다른 옵션은
amqp_byte_t
자신을 C 문자열을 래핑하는 것입니다, 나는 당신이 어쨌든, 그렇게해야한다고 생각하지 않는다? 그것은 무엇을합니까? – iabdalkader