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

-3 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;
    }
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*kyy 6

您应该使用memcmp:

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