Home > front end >  C warning: Pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
C warning: Pointer targets in passing argument 1 of ‘sprintf’ differ in signedness

Time:11-01

I have the following piece of code that writes the value of time into the temp buffer.

#include<stdio.h>

int main() {
    unsigned char temp[8];
    unsigned int time = 0x00101010;
    
    sprintf(temp, "%x", time);
}

Both temp and time are unsigned values; however, I still get the following warning:

Pointer targets in passing argument 1 of ‘sprintf’ differ in signedness

Can someone please explain why I am getting this warning and how to remove it?

CodePudding user response:

Either do:

#include<stdio.h>

int main() {
    char temp[8];
    unsigned int time = 0x00101010;
    
    sprintf(temp, "%x", time);
}

or

#include<stdio.h>

int main() {
    unsigned char temp[8];
    unsigned int time = 0x00101010;
    
    sprintf((char*) &temp, "%x", time);
}

sprintf is defined as sprintf(char*, const char*, ...), so the first argument needs to be a signed char pointer.

  • Related