【C语言】C语言字符串函数实现(一)

来源:互联网 发布:mysql 错误日志路径 编辑:程序博客网 时间:2024/03/29 05:40

1.字符串长度

size_t my_strlen(const char *string);

2.字符串的拷贝

char *my_strcpy(char *dest_str, const char *src_str);char *my_strncpy(char *dest_str, const char *src_str,                 size_t num);

3.字符串的比较

int my_strcmp(const char *string1, const char *string2);int my_strncmp(const char *string1, const char *string2,               size_t num);

4.字符串的连接

char *strcat(char *dest_str, const *src_str);char *strncat(char *dest_str, const *src_str,              size_t num); 

5.字符串的查找

char *my_strchr(const char *string, int chr);int  find_index(const char *string, int chr);

1.字符串的长度
 功能:计算输入字符串长度

size_t my_strlen(const char *string){    const char *str = string;    size_t length = 0;    if(string == NULL){        return 0;    }    while(*str++ != '\0'){        length++;    }    return length;}

2.字符串的拷贝
 功能:将已给定的字符串内容拷贝到另一个上

char *my_strcpy(char *dest_str, const char *src_str){    char *dest = dest_str;    const char *src = src_str;    //如果参数不合法,或者dest和src指向为同一个字符串,无需拷贝    if(dest_str == NULL || src_str == NULL    || dest_str == src_str){        return dest_str;    }    //拷贝动作    while((*dest++ = *src++) != '\0'){    }    return dest_str;}char *my_strncpy(char *dest_str, const char *src_str,               size_t num){    char *dest = dest_str;    const char *src = src_str;    //如果参数不合法,或者dest和src指向为同一个字符串,无需拷贝    if(dest_str == NULL || src_str == NULL    || dest_str == src_str){        return dest_str;    }    //拷贝动作    while( num-- && (*dest++ = *src++) != '\0'){    }    return dest_str;}

3.字符串的比较
 功能:传入两个字符串,比较str1和str2的大小。如果str1大于str2,则返回值为正;如果相等返回值为0;如果str1小于str2,返回值为负;

int my_strcmp(const char *str1, const char *str2){    do{        if(*str1 != *str2){            break;        }        str1++;        str2++;    }while(*str1 != '\0' || *str2 != '\0');    return*str1-*str2);}int my_strncmp(const char *str1, const char *str2,size_t num){    int i = 0;    do{        if(*str1 != *str2){            break;        }        str1++;        str2++;        i++;    }while(*str1 != '\0' && *str2 != '\0' && i < num);    return*str1-*str2);}

4.字符串的连接
 功能:将一个字符串拼接到另一个字符串后面

char *my_strcat(char *dest_str, const char *src_str){    // "hello,world"    char *dest = dest_str;    const char *src = src_str;    if(dest_str == NULL || src_str == NULL){        return dest_str;    }    //首先要找到dest末尾    // "hello"    dest += my_strlen(dest_str);    my_strcpy(dest, src);    return dest_str;}char *my_strncat(char *dest_str, const char *src_str,                size_t num){    // "hello,world"    char *dest = dest_str;    const char *src = src_str;    if(dest_str == NULL || src_str == NULL){        return dest_str;    }    //首先要找到dest末尾    // "hello"    dest += my_strlen(dest_str);    my_strncpy(dest, src, num);    return dest_str;}

5.字符串的查找

char *my_strchr(const char *string, int chr){    const char *str = string;    if(string != NULL){         //从头到尾查找和chr相等的第一个值,如果找到返回其地址        while(*str != '\0'){            if(*str == (char)chr){                return (char *)str;            }            str++;        }    }    return NULL;}int  find_index(const char *string, int chr){    //  "hello,world"    char *find_char = NULL;    if((find_char = my_strchr(string, chr)) != NULL){         return find_char - string;     }else{         return -1;    }}//找字符在字符串中最后一次出现的位置char *strrchr(const char *string, int chr){    const char *str = string;    char *p_char = NULL;        if(string != NULL){        while(*str != '\0'){            if(*str == (char)chr){                p_char = (char *)str;            }            str++;        }       }    return p_char;}
1 0
原创粉丝点击