Reputation: 476
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?
Upvotes: 1
Views: 4673
Reputation: 59637
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).
Upvotes: 5
Reputation: 11
int main() {
...
LogOutput("Hello World!");
}
void LogOutput(char *msg) {
int i;
for (i = 0; i < strlen(msg); i++) {
USART0_TX(msg[i]); // transmit byte
}
}
Upvotes: 1