memcmp - strncmp和memcmp的使用

标签 memcmp strncmp

if(strncmp(buf, buf2, 7) == 0)

做同样的事情

if(memcmp(buf, buf2, 7) == 0)

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

我打算将其附加到另一个问题,但后来决定单独发布可能更好。据推测,答案要么是微不足道的"is",要么如果不是,那有什么区别?

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

最佳答案

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

另一方面,

memcmp() 用于比较随机内存块。它比较每个 block 中指定的字节数,直到发现差异为止,而不管字节的值是多少。也就是说,它不会在字符串终止符处停止。

关于memcmp - strncmp和memcmp的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687630/

相关文章:

c - memcmp 应该返回什么?

c++ - 可变长度字符串内容的非递归检查

C++ memcmp 因无符号字符数组而失败?

c - strncmp 的这种用法是否包含越界读取?

c++ - strncmp 没有正确匹配

c - 如何在姓名前添加验证 mr 或 mrs

c - 为什么初始数组元素的地址比较相等?

c - strcmp 拒绝工作

c++ - 使用 strncmp 函数在 Arduino IDE 中出错

C Strncmp 返回部分输入