我用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开头,则会出错.谢谢!
您应该使用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)