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

编辑:这是重复的,我已经标记了它。 见[问题] 为什么C中的“a”!=“a”?

所以我试图根据结构中的字段打印出特定的消息。 该字段包含字符串“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') ...