我正在尝试将一个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
获取字符串的长度(包括strlen
的string.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
}
}