Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert from uint8_t * to char * in C

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?

like image 671
skyleguy Avatar asked Mar 22 '17 19:03

skyleguy


2 Answers

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

By casting:

print((char*) stackHolder);
like image 76
emlai Avatar answered Nov 01 '22 12:11

emlai


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);
}
like image 6
chux - Reinstate Monica Avatar answered Nov 01 '22 11:11

chux - Reinstate Monica