c - 在 C 中比较两个字符串是否相等的最佳方法是什么?

标签 c string string-comparison

<分区>

我有两个字符串(在那种情况下是字符串文字),比如说

char *name        = "Fotis";
char *second_name = "Fotis";

我有两种比较它们的方法,它们都给我一个准确的结果。第一个是相等运算符 (==),同样:

if (name == second_name)
    printf ("Great success!\n");

第二个是通过 string.h 中的 strcmp 函数:

if (strcmp (name, second_name) == 0)
    printf ("Great success!\n");

我的问题是:两者中哪一个是最{高效 |惯用} 方式来比较 C 中的两个字符串?还有另一种更惯用的方式吗?

最佳答案

strcmp 的第二种方式是正确的,使用== 的第一种方式是不正确,因为它只是比较指针的值,而不是字符串的内容。

您比较的两个字符串恰好都是字符串文字,根据标准,它们可能具有也可能不具有相同的指针值。

关于c - 在 C 中比较两个字符串是否相等的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21610282/

相关文章:

c - 对二进制文件进行排序

字符串中出现的字符(区分大小写)

javascript - 连接字符串和 <a href =""></a>

delphi - 使用 Unicode 字符串调用时 StrLComp 与 AnsiStrLComp

c - 尝试删除空格时 C 代码出错

php - 使用 preg_replace 使序号全部小写

c - 在C程序中,如何检查输入字符串是否是特定名称?

c# - String.Compare 的不同重载之间的区别

.net - StringComparison 和 StringComparer 之间转换的优雅方式?

c - 我无法通过 NETLINK_ROUTE 选项通过 Netlink 套接字设置特定接口(interface)(eth0 或 eth1)的 MTU 大小