Jimmy
Jimmy

Reputation: 881

How do you convert void pointer to char pointer in C

Ok this has been become sooo confusing to me. I just don't know what is wrong with this assignment:

void *pa; void *pb;
char *ptemp; char *ptemp2; 

ptemp = (char *)pa;
ptemp2 = (char *)pb;

Can anyone tell me why I'm getting this error:

error: invalid conversion from ‘void*’ to ‘char*’

Upvotes: 20

Views: 108807

Answers (3)

Funky
Funky

Reputation: 11

I faced the same problem as you, and the way I got it to work was by encompassing the whole thing in parentheses.

Example:

pChar = ((char*)pVoid);

Upvotes: 1

octopusgrabbus
octopusgrabbus

Reputation: 10695

I just tried your code in a module called temp.c. I added a function called f1.

void *pa; void *pb;
char *ptemp; char *ptemp2;

f1()
{
        ptemp = (char *)pa;
        ptemp2 = (char *)pb;
}

On Linux I entered gcc -c temp.c, and this compiled with no errors or warnings.

On which OS are you trying this?

Upvotes: 3

Armen Tsirunyan
Armen Tsirunyan

Reputation: 133024

Actually, there must be something wrong with your compiler(or you haven't told the full story). It is perfectly legal to cast a void* to char*. Furthermore, the conversion is implicit in C (unlike C++), that is, the following should compile as well

 char* pChar;
 void* pVoid;
 pChar = (char*)pVoid; //OK in both C and C++
 pChar = pVoid;        //OK in C, convertion is implicit

Upvotes: 32

Related Questions