C:如何比较两个字符串?
编辑:这是一个重复项,我已将其标记为重复项。见[问题] 因此,我试图根据结构中的字段打印出特定的消息。该字段包含字符串“1” 每当我运行printf(“%s”)时,记录.fields[2]代码>输出为C:如何比较两个字符串?,c,string,compare,C,String,Compare,编辑:这是一个重复项,我已将其标记为重复项。见[问题] 因此,我试图根据结构中的字段打印出特定的消息。该字段包含字符串“1” 每当我运行printf(“%s”)时,记录.fields[2]输出为1;我没有格式警告 但是,当我对照相应的字符串(在本例中为“1”)检查字段时,检查失败: if (record.fields[2] == "1") { printf("The field is 1!"); } 您需要使用来比较字符串: if (strncmp(record.fields[2],
1
;我没有格式警告
但是,当我对照相应的字符串(在本例中为“1”)检查字段时,检查失败:
if (record.fields[2] == "1") {
printf("The field is 1!");
}
您需要使用来比较字符串:
if (strncmp(record.fields[2], "1", 1) == 0) ...
您需要与零进行比较,因为当两个字符串相同时,strcmp
返回零
但是,看起来您并不是在比较字符串:而是在字符串中查找特定字符。在这种情况下,您需要使用字符常量而不是字符串文字(带单引号):
如果record.fields是
字符*
,则OP应使用字符“1”作为比较target@hd1你说得对,strncmp更好。编辑。谢谢@PolyShell请看一下编辑。再说一遍,@PolyShell,record.fields的声明是什么样子的?只要其中一个参数保证有一个NULL
终止符(就像这里的“1”
),我看不出有理由使用strncmp
,而不是strcmp
。
if (record.fields[2] == '1') ...