自定义与字符串相关的函数

一,assert()

assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:

#include 
void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。


二,strcpy()

char *strcpy(char *dest, const char *src){
    assert((dest != NULL)&&(src != NULL));
    char *p = dest;
    while(*src != '\0')
    {
        *dest = *src;
        src ++;
        dest ++;
    }
    *dest = '\0';
    return p;
}
注意下面几点:

1,把第二个参数设置为const,防止对它进行修改。

2,设置断言。

3,返回目标地址,方便进行连续赋值。


三,strcat()

char *strcat(char *dest, const char *src)  {
    assert(dest != NULL && src != NULL);
    char *p = dest;
    while(*dest != '\0'){
        dest ++;
    }
    while(*src != '\0'){
        *dest = *src;
        src ++;
        dest ++;
    }
    *dest = '\0';
    return p;
}
 
四,strcmp()

int strcmp(const char *str1, const char *str2){
    assert(str1 != NULL && str2 != NULL);
    while(*str1 && *str2 && *str1 == *str2){
        str1 ++;
        str2 ++;
    }
    if(*str1 > *str2){
        return 1;
    }
    if(*str1 < *str2){
        return -1;
    }
    return 0;
}


五,strlen()

int strlen(const char *str){
    if(str == NULL){
        return 0;
    }
    char *p = str;
    while(*p){
        p ++;
    }
    return p - str;
}

你可能感兴趣的:(常见问题)