Embedded 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
}
}
Тем не менее, это только отправляет первые две буквы "Он" --- кто-нибудь знает, что я делаю не так?
2 ответа
Решение
Вы используете sizeof
оператор, и получить размер типа данных, а не длину строки. использование strlen
чтобы получить длину строки (включите string.h
за strlen
и другие функции работы со строками).
int main() {
...
LogOutput("Hello World!");
}
void LogOutput(char *msg) {
int i;
for (i = 0; i < strlen(msg); i++) {
USART0_TX(msg[i]); // transmit byte
}
}