C++ 变量(&;variable)地址的字符串长度-嵌入C

C++ 变量(&;variable)地址的字符串长度-嵌入C,c++,embedded,uart,texas-instruments,code-composer,C++,Embedded,Uart,Texas Instruments,Code Composer,如何从变量(&variable)的地址中找到字符串的长度?代码如下: SimpleProfile_GetParameter(SIMPLEPROFILE_CHAR7, &newValue); // Hello123 const char echoPrompt[] = "Print From BLE characters:\r\n"; UART_write(uart, echoPrompt, sizeof(echoPrompt)); // Output : Print From BLE ch

如何从变量(&variable)的地址中找到字符串的长度?代码如下:

SimpleProfile_GetParameter(SIMPLEPROFILE_CHAR7, &newValue); // Hello123
const char echoPrompt[] = "Print From BLE characters:\r\n";
UART_write(uart, echoPrompt, sizeof(echoPrompt)); // Output : Print From BLE characters: | Size : 29
UART_write(uart, &newValue, sizeof(&newValue)); // Output : Hello | Size : 4
我在中使用此代码。我需要在UART中打印字符串,其中我需要指定字符串中的字符数


我需要打印“Hello123”,而不是打印“Hello”

&newValue
是指针,因此
sizeof(&newValue)
返回指针的大小,而不是它指向的字符串。假设
newValue
是以null结尾的字符串,请使用
strlen()

sizeof
在编译时操作,它无法获得动态构造的字符串的大小

您还应该使用
echoPrompt
,因为
sizeof
包含尾随的空字节,您可能不需要编写它

UART_write(uart, echoPrompt, strlen(echoPrompt));
UART_write(uart, &newValue, strlen(&newValue));

sizeof(&newValue)
正在获取指针的大小,而不是数组的大小。如果需要字符串的长度,请使用
strlen()
。可以,我可以获取数组的大小吗?。我修改了我的问题“字符串”是一个正确的以null结尾的字符串吗?然后使用
strlen
获取其长度。否则,仅使用指针无法获得某些内存的大小。当前它是数据类型“unsigned char”
strnlen
将更安全一些,以防字符串没有正确终止。假设他的实现具有
strnlen()
。strlen工作正常。strnlen给我的错误是“error#10234-D:未解析的符号仍然存在”@ŞivĂr
strnlen
是一个POSIX函数,它不是标准的C。在这种情况下
sizeof(echoPrompt)-1
也可以工作。