变量(&变量)地址的字符串长度 - 嵌入式C.

时间:2017-09-01 06:22:47

标签: 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 characters: | Size : 29
UART_write(uart, &newValue, sizeof(&newValue)); // Output : Hello | Size : 4

我在Code Composer Studio (CCS)中使用此代码。我需要在UART中打印字符串,我需要指定字符串中的字符数。

我需要" Hello123"打印而不是打印"你好"

1 个答案:

答案 0 :(得分:1)

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

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

您也应该使用echoPrompt执行此操作,因为sizeof包含尾随空字节,您可能不需要编写该字节。

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