I'm trying to send an array of characters in C, byte by byte to an output for a microcontroller. I'm using the following code:

int main() {
...
   LogOutput("Hello World!");
}

void LogOutput(char *msg) {

    int i;
    for (i = 0; i < sizeof(msg); i++) {
        USART0_TX(msg[i]);              // transmit byte
    }
}

However, this only sends the first two letters "He" --- does anybody know what I'm doing wrong?

有帮助吗?

解决方案

You're using the sizeof operator, and getting the size of the datatype, not the length of the string. Use strlen to get the length of a string (include string.h for strlen and other string manipulation functions).

其他提示

int main() {
...
   LogOutput("Hello World!");
}

void LogOutput(char *msg) {

    int i;
    for (i = 0; i < strlen(msg); i++) {
        USART0_TX(msg[i]);              // transmit byte
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top