strcmp,strncmp ,memcmp函数
来源:互联网 发布:科比的技术特点知乎 编辑:程序博客网 时间:2024/05/16 02:50
1:strcmp
extern
int
strcmp
(
const
char
*s1,
const
char
*s2);
当s1<s2时,返回为负数;
当s1==s2时,返回值= 0;
当s1>s2时,返回正数。
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。
当两个字符串不相等时,C标准没有规定返回值会是1 或 -1,只规定了正数和负数。有些实现会返回1或-1,
但将返回值与1或-1做比较的人,都是不合格的程序员。
2:strncmp
int strncmp ( const char * str1, const char * str2, size_t n );
(1):strncmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,直到字符结束标志'\0',若差值不为0,则将差值返回。
(2):要比较的字符包括字符串结束标志'\0',而且一旦遇到'\0'就结束比较,无论n是多少,不再继续比较后边的字符。
(3):若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 若小于s2,则返回小于0的值。
3:memcmp
int memcmp(const void *buf1, const void *buf2, unsigned int count);
比较内存区域buf1和buf2的前count个字节。
在头文件 #include <string.h>或#include<memory.h>
当buf1<buf2时,返回值<0
当buf1=buf2时,返回值=0
当buf1>buf2时,返回值>0
第一个字节相等,第二个字节比较中大小已经确定,不必继续比较第三字节了
1、strcmp是按照字节比较的,如果出现"\0"的情况会终止比较;
2、memcmp 用来比较内存块的内容是否一致,不常用于字节的比较,中包含一些由于边界对齐需求而填入结构对象中的空格、联合 (union)结束的额外空格、字符串所分配的空间未使用完的部分引起的“holes”的话,最好使用memcmp来完成,这些“holes”的内容是不确定的,在执行byte-wise比较时结果也是不明确的;
3、strcmp比较的字符串,而memcmp比较的是内存块,strcmp需要时刻检查是否遇到了字符串结束的 \0 字符,而memcmp则完全不用担心这个问题,所以memcmp的效率要高于strcmp
阅读全文
0 0
- strcmp,strncmp ,memcmp函数
- strcmp,strncmp,memcmp,strcat,strncat函数实现
- memcmp与strncmp函数
- memcmp与strncmp函数
- strcmp, strncmp和memcmp的区别
- strcmp, strncmp和memcmp的区别
- strcmp, strncmp和memcmp的区别
- strcmp, strncmp和memcmp的区别
- memcmp与strcmp函数
- memcmp和strcmp函数
- memcmp和strcmp函数
- memcmp和strcmp函数
- memcmp与strcmp函数
- memcmp与strcmp函数
- memcmp与strcmp函数
- memcmp与strcmp函数
- strcmp,strncmp函数
- string库之模拟实现strcmp、strncmp和memcmp
- mysql_DDL、DML
- 排序算法(一):直接排序
- HDU 6186 CS Course(位运算 思维)
- HDU1001
- android-Ultra-Pull-To-Refresh/内含滑动冲突解决
- strcmp,strncmp ,memcmp函数
- Test4(2)求一个n阶方阵对角线元素之和
- Unit Testing with Sinon.JS
- 二叉树递归求高度,非递归求高度,层次遍历
- C++之命名空间
- 删除一个文件夹
- AI与游戏——吃豆人(3)基本路径规划算法(下)
- HDU1004
- 星际穿越