我用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开头,则会出错。 谢谢!
答案 0 :(得分:6)
您应该使用memcmp:
if(read_max[0] != read_max[1] || memcmp(read_buf,read_buf2, read_max[0]) != 0) {
/* Buffers are different */
}