哪位大神能解释一下,(Strcmp(argv[1],”-n”)==0)与(argv[1] == “-n”) 有什么区别

2025-03-05 04:56:47
推荐回答(4个)
回答1:

第一个是逐个比较两个字符串每个字符是否相等
而第二个中,常量字符串是常量指针,指针间是可以进行比较的,所以argv[1] == “-n”意思是比较argv[1]这个指针的值是否与"-n"这个常量指针的值相等.如果先前令argv[1] = "-n", 那比较结果就是真了,否则为假.
程序验证:
#include #include
int main(void)
{
char *p = "-n";

printf("[%d][%d]\n", strcmp(p, "-n"), "-n" == p);
p = "-p";
printf("[%d][%d]\n", strcmp(p, "-n"), "-n" == p);
return 0;
}

运行后输出:
[0][1]
[1][0]

回答2:

第一个是逐个比较两个字符串中的每个字符是否相等。
第二个,没见过这么写的。
从你的问题来看,你是要判断命令行是否是“-n”这个参数。C里面不能用"=="来比较char*类型的字符串是否相等,所以第二种是不对的。

回答3:

字符串不能使用 == 进行比较, 字符可以。。

回答4:

你第一个是字符串的比较,第二个是argv[1]是字符,后面又是字符串,感觉这个怎么比?