Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:如何比较两个字符串?_C_String_Compare - Fatal编程技术网

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

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”

每当我运行printf(“%s”)时,记录.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') ...