Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

c

char

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;
    }
like image 205
Suspended Avatar asked Feb 04 '26 04:02

Suspended


2 Answers

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.

like image 116
unwind Avatar answered Feb 05 '26 21:02

unwind


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]);
like image 42
borrible Avatar answered Feb 05 '26 21:02

borrible