是
if(strncmp(buf, buf2, 7) == 0)
做同样的事情
if(memcmp(buf, buf2, 7) == 0)
buf
和 buf2
是 char* 数组或类似数组。
我打算将其附加到另一个问题,但后来决定单独发布可能更好。据推测,答案要么是微不足道的"is",要么如果不是,那有什么区别?
(我从在线文档中找到了这些函数,但不确定 strncmp
因为文档有点不清楚。)
最佳答案
和strcmp()
一样,strncmp()
是用来比较字符串的,因此它至少在找到字符串终止符时停止比较一个论点。超过该点的任何差异都不会影响结果。 strncmp()
的不同之处在于,如果在此之前没有遇到终止符,它也会在指定的字节数之后停止比较。
memcmp()
用于比较随机内存块。它比较每个 block 中指定的字节数,直到发现差异为止,而不管字节的值是多少。也就是说,它不会在字符串终止符处停止。
关于memcmp - strncmp和memcmp的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687630/