Warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char *’

cchar

I'm trying to print all characters stored in hex array to the screen, one by one, but I get this strange error in line 16. As far as I know, %c should be expecting a char, not an int.
Why I'm getting this error?
Below is my code, thanks.

    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    #include <ctype.h>
    #include <string.h>

    int main() 
    {
        char hex[8] = "cf0a441f";
        int hexCounter;
        char *currentHex;

        for(hexCounter=0; hexCounter<strlen(hex); hexCounter++)
        {
            currentHex = &hex[hexCounter];
            printf("%c",currentHex);
        }   
         return 0;
    }

Best Answer

You mean

printf("%c", *currentHex);

In my opinion you can remove the entire idea of currentHex since it just adds complexity for no value. Simply do:

printf("%c", hex[hexCounter]);

The important point is that you're supposed to pass the value of the character itself, not it's address which is what you're doing.

Related Topic