如何从变量(& 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
我在Code Composer Studio (CCS)中使用此代码。我需要在UART中打印字符串,我需要指定字符串中的字符数。
我需要" Hello123"打印而不是打印"你好"
答案 0 :(得分:1)
&newValue
是一个指针,因此sizeof(&newValue)
返回指针的大小,而不是它指向的字符串。假设newValue
是以空字符结尾的字符串,请使用strlen()
。
sizeof
在编译时运行,它无法获得动态构造的字符串的大小。
您也应该使用echoPrompt
执行此操作,因为sizeof
包含尾随空字节,您可能不需要编写该字节。
UART_write(uart, echoPrompt, strlen(echoPrompt));
UART_write(uart, &newValue, strlen(&newValue));