char * str = "012";
int main(int argc, char * argv[]) {
if (str == argv[1]) {
printf("success");
}
}
输出:
./test 0x400634
那么我应该会得到成功的输出。
但是我不能得到任何output.How,我可以比较这两个地址,然后打印出它们相等吗?请帮帮我。
发布于 2016-09-26 01:33:59
我认为您对字符串在C中的工作方式有些困惑。
字符串是字符数组,具有相同内容的两个字符串不一定具有相同的地址。
此外,argv只包含字符串。如果您将一个数字传递给您的程序,它将被解释为字符串,而不是数字。因此,当您将argv[1]
与str
进行比较时,即使您可以知道str
将位于哪个地址(您不能),您也可以将str
的地址与argv[1]
的地址进行比较,而不是将其内容进行比较。
如果您希望将argv[1]
提取为一个数字,请使用strtol
(这里提到的:https://stackoverflow.com/a/20654510/2830652)
if ((long)str == strtol(argv[1], NULL, 16))
{
printf("success");
}
将允许您比较正确的数据,只需在将地址传递给您的程序时省略地址的0x
部分。
https://stackoverflow.com/questions/39689772
复制相似问题