• 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.

  • 相关阅读:
    1010考试T1
    P5631 最小mex生成树 分治 并查集
    P4366 [Code+#4]最短路 建图 最短路
    P1654 OSU! 期望概率DP
    7.26集训
    7.25集训
    7.23集训
    7.22集训
    7.21test
    7.12test
  • 原文地址:https://www.cnblogs.com/Pond-ZZC/p/11820812.html
Copyright © 2020-2023  润新知