对于2个确切的文件,strcmp不会返回0

时间:2017-05-11 13:32:50

标签: c strcmp

我用c编写了一个代码,它从2个文件中读取,而不是将2个缓冲区与strcmp进行比较。对于某些字符串,即使我从完全相同的文件中读取,strcmp也会返回!= 0

任何人都知道为什么?

这是代码中的相关部分:

read_max[0]= read(fdin[0],read_buf,read_offset) ;
read_max[1]=read(fdin[1],read_buf2,read_offset);

    if(strcmp(read_buf,read_buf2)){
        same=1;
    }

我试图在这个论坛和其他论坛上查找答案,但我发现的唯一答案是针对' \ n'这是添加的。 正如我在标题中写道的那样,问题在于它没有进入if,但确实如此(因为它没有返回0)! 事实并非如此。写字符串的方式是一样的。 在版本中,有时strcmp正常工作。

例如,如果文件以空格或\ n开头,则会出错。 谢谢!

1 个答案:

答案 0 :(得分:6)

您应该使用memcmp:

if(read_max[0] != read_max[1] || memcmp(read_buf,read_buf2, read_max[0]) != 0) {
    /* Buffers are different */
}