strncmp和memcmp的使用

use*_*501 2 memcmp strncmp

if(strncmp(buf, buf2, 7) == 0)
Run Code Online (Sandbox Code Playgroud)

做同样的事情

if(memcmp(buf, buf2, 7) == 0)
Run Code Online (Sandbox Code Playgroud)

bufbuf2是 char* 数组或类似数组。

我本来打算将其附加到另一个问题中,但后来决定也许最好单独发布。大概答案是微不足道的“是”,或者如果不是,那么有什么区别呢?

(我从在线文档中找到了这些函数,但不确定,strncmp因为文档有点不清楚。)

Joh*_*ger 8

就像strcmp(),strncmp()用于比较strings一样,因此当它在至少一个参数中找到字符串终止符时,它会停止比较。超过该点的任何差异都不会影响结果。 strncmp()不同之处在于,如果在指定的字节数之前没有遇到终止符,它也会在指定的字节数之后停止比较。

memcmp()另一方面,用于比较随机存储器块。无论字节的值是什么,它都会比较每个块中指定的字节数,直到找到差异。也就是说,它不会在字符串终止符处停止。