c++之手写strcmp

int strcmp(const char* str1, const char*str2){
assert(str1 != NULL&&str2 != NULL);
while (*str1&&*str1 == *str2){
str1++;
str2++;
}

if (*(unsigned char*)str1 < *(unsigned char*)str2){
return -1;
}
else if (*(unsigned char*)str1 > *(unsigned char*)str2){
return 1;
}
else{
return 0;
}

}

注意:
1.参数是 const
2.异常输入处理 assert(str1 != NULL&&str2 != NULL);
3.字符之间大小比较时一定要先将char*型指针先转换为unsigned char*
因为有符号字符值的范围是-128~127,无符号字符值的范围是0~255,而字符串的ASCII没有负值。
例如 *str1的值为1,*str2的值为255。
本来*str1<*str2,但是有符号数中255是-1.

原文链接: https://www.cnblogs.com/Pond-ZZC/p/11820812.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++之手写strcmp

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/305619

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午2:57
下一篇 2023年2月16日 上午2:58

相关推荐