Convert from uint8_t * to char * in C

51,059

Solution 1

How can I convert the uint8_t * stackHolder into a char *?

By casting:

print((char*) stackHolder);

Solution 2

I have a method that takes a char *

Suggest minimizing casts to one location to accomplish the goal and retain function signature type checking. Create a wrapper function with a cast.

// OP's original function
extern void skyleguy_Print(char *);

void skyleguy_Print_u8(uint8_t *s) {
  skyleguy_Print((char *) s);
}
Share:
51,059
skyleguy
Author by

skyleguy

Updated on October 18, 2020

Comments

  • skyleguy
    skyleguy over 3 years

    I am programming in C using Atmel Studio (for those unfamiliar with this it is used to program to micro controllers such as arduino. You can not simply print, you have to send the data Serially to an application such as Terminal.)

    I have so far:

    uint8_t * stackHolder;
    char buffer[128];
    stackHolder = &buffer[127];
    

    Lets say that the address of buffer[127] happens to be 0x207. I can see that the value of stackHolder is 0x207 using the debugger. I have a function that takes a char * and prints that. So my question is how can I convert the uint8_t * stackHolder into a char * so I can pass it to my print function?