繁体   English   中英

从字符串转换为无符号char *会留下垃圾

[英]Casting from string to unsigned char* leaves garbage

这是C ++新手问题。 我有一个带有以下代码的Arduino草图,用于传输蓝牙低功耗UART通知。

command为5个字符时,我在蓝牙接收器端得到5个字符。 但是,当我在一个5字符command后跟一个单字符命令时,接收到的是单个字符,后跟上一个command最后3个字符。

例,

command-1,0t 我收到的是-1,0t 但是下一个command就是r 我收到的是r,0t

这里发生了什么事? 如何获得“ r”?

int BLEsend(String command){
    byte length = sizeof(command);    
    unsigned char* notification = (unsigned char*) command.c_str(); // cast from string to unsigned char*
    Serial.print(length);
    BLE.sendData(UART_SEND, notification, length);
    Serial.print("Notification Sent: "); Serial.println(command);
    delay(100);
    return 1;
}

sizeof()不能提供字符串的长度。

您可以使用int length = command.length( ); 代替。

还有command.size( ); 应该也可以。

您还需要将字符串command.c_str()复制到notification

notification = new char[length + 1];
strcpy(notification , command.c_str());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM