I think you are slightly confused as to how strings work in C.
Strings are arrays of characters and two strings that have the same content do not necessarily have the same address.
Also, argv only contains strings. If you pass a number to your program, it will be interpreted as a string, not a number. Thus when you are comparing argv[1]
to str
, even if you could know what address str
will be at (you can't), you would be comparing str
s address to the address of argv[1]
, not its contents.
If you wish to extract argv[1]
as a number, use strtol
(as mentioned here: https://stackoverflow.com/a/20654510/2830652)
if ((long)str == strtol(argv[1], NULL, 16))
{
printf("success");
}
Will allow you to compare the right data, just omit the 0x
part of the address when you pass it to your program.