warning: format '%c' expects type 'int', but argument 2 has type 'char *'

20,567

Solution 1

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.

Solution 2

You have hex[hexCounter] as a char so when you set

currentHex = &hex[hexCounter];

you are setting currentHex to the address of a char, i.e. a char *. As such, in your printf you need

printf("%c",*currentHex);

What you are doing is unnecessary anyway, since you could just do

printf("%c",hex[hexCounter]);
Share:
20,567
Suspended
Author by

Suspended

Updated on January 25, 2020

Comments

  • Suspended
    Suspended over 4 years

    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;
        }