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
    }
}
Другие вопросы по тегам