2012-12-14 2 views
-1

길이가 인 char*amqp (RabbitMQ) C library 이상으로 보냅니 까? 모든 샘플에서 그들은 amqp_basic_cstring(char*)과 같은 것을 사용합니다. 그러나 null을 끝내지는 못했지만, char *과 그 length 쌍을 사용합니까?amqp C 라이브러리를 사용하여 길이 N의 char *을 보내는 방법은 무엇입니까?

+0

어디'amqp_basic_cstring'가 정의 :

str[len-1]='\0'; 

다른 옵션은 amqp_byte_t 자신을 C 문자열을 래핑하는 것입니다, 나는 당신이 어쨌든, 그렇게해야한다고 생각하지 않는다? 그것은 무엇을합니까? – iabdalkader

답변

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, ...);