嵌入式C将字符串传递给函数



我正在尝试将一个C中的字符数组逐字节发送到微控制器的输出。我使用以下代码:

int main() {
...
   LogOutput("Hello World!");
}
void LogOutput(char *msg) {
    int i;
    for (i = 0; i < sizeof(msg); i++) {
        USART0_TX(msg[i]);              // transmit byte
    }
}

然而,这只发送了前两个字母"他"——有人知道我做错了什么吗?

您使用的是sizeof运算符,并获取数据类型的大小,而不是字符串的长度。使用strlen获取字符串的长度(包括strlenstring.h和其他字符串操作函数)。

int main() {
...
   LogOutput("Hello World!");
}
void LogOutput(char *msg) {
    int i;
    for (i = 0; i < strlen(msg); i++) {
        USART0_TX(msg[i]);              // transmit byte
    }
}

相关内容

最新更新