C:如何比较两个字符串?

标签 c string compare

编辑:这是重复的,我已将其标记为重复。请参阅[问题]Why is "a" != "a" in C?

所以我试图根据结构中的字段打印出特定的消息。该字段包含字符串“1”。

每当我运行printf("%s", record.fields[2]);时输出是1 ;我没有任何格式警告。

但是,当我根据相应的字符串(在本例中为“1”)检查该字段时,检查失败:

if (record.fields[2] == "1") {
    printf("The field is 1!");
}

最佳答案

您需要使用strncmp比较字符串:

if (strncmp(record.fields[2], "1", 1) == 0) ...

您需要与零进行比较,因为当两个字符串相同时,strcmp 返回零。

但是,您似乎没有比较字符串:相反,您正在寻找字符串中的特定字符。在这种情况下,您需要使用字符常量而不是字符串文字(带单引号):

if (record.fields[2] == '1') ...

关于C:如何比较两个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116012/

相关文章:

c - 这是 C99 标准明确定义的吗?

java - 使用正则表达式验证密码

c# - 为什么在单独的类中实现 IEqualityComparer<T>

使用 CompareTo 的 VB.NET 排序顺序 - 结果不正确?

java - 比较并检索 ArrayList 中的元素

C : confusion over a small piece of code - what is '&0x' ?

c - 消息传递接口(interface),MPI_Recv() 方法

string - 将字节 slice 转换为字符串时,Golang 会进行任何转换吗?

我们可以将 MACRO 名称定义为特定字符串吗?

string - 在空格上拆分字符串但忽略双引号之间的部分