Question

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?

Était-ce utile?

La solution

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).

Autres conseils

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

void LogOutput(char *msg) {

    int i;
    for (i = 0; i < strlen(msg); i++) {
        USART0_TX(msg[i]);              // transmit byte
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top