zoukankan      html  css  js  c++  java
  • 自己动手写字符串库函数 二(C语言实现) 分类: C语言学习 2015-01-05 22:46 127人阅读 评论(0) 收藏

    接着上一篇的自己动手写字符串你库函数 一(C语言),接着往下面写

    //具体实现 string.c
    //追加字符
    void Append_Char(string*strs, const char ch)
    {
    	if (IsEmpty(strs) != 0 && ch != NULL)
    	{
    		int strLen = my_StrLen(strs->str);
    		//需要重新分配空间
    		strs->str = (char*)realloc(strs->str, strs->len + sizeof(char));
    		strs->len += 1;  //长度加+1
    		*(strs->str+strs->len - 2) = ch;
    		*(strs->str+strs->len - 1) = '';
    	}
    }
    
    //追加字符串  相当于StrCat函数
    void Append_Str(string*strs, const char* s)
    {
    	if (IsEmpty(strs) != 0 && s != NULL)
    	{
    		int desStrLen = my_StrLen(strs->str);
    		int sourStrLen = my_StrLen(s);
    		if (desStrLen + sourStrLen > strs->len)
    		{
    			//int needLen = desStrLen + sourStrLen - strs->len;
    			//重新分配空间  +1是为了最后一个为‘’
    			strs->len = desStrLen + sourStrLen + 1;
    			strs->str = (char*)realloc(strs->str, strs->len);
    			while (*s != '')
    			{
    				*(strs->str+desStrLen++) = *s++;
    			}
    		}
    		else
    		{
    			strs->len = desStrLen + sourStrLen + 1;
    			while (*s != '')
    			{
    				*(strs->str+desStrLen++) = *s++;
    			}
    		}
    		*(strs->str+desStrLen) = '';
    	}
    }
    
    //在母串中查找字符
    char* my_Strchr(string*des, char ch)
    {
        char*des2 = des->str;
        if (IsEmpty(des) == 0)
            return NULL;
        while (*des2 != '')
        {
            if (*des2 == ch)
                return des2;
            else
                des2++;
        }
        return NULL;
    }
    
    //删除的指定的字符串
    void my_DelChar(string*des, char ch)
    {
        if (IsEmpty(des) == 0 || ch == NULL)
            return;
        else
        {
            char* des2 = my_Strchr(des, ch);
            char*des3 = des2;
            if (des2 == NULL)
                return;
            //将后面的向前移动
            while (*des2 != '')
            {
                *des3++ = *++des2;
            }
            des->len -= 1;  //长度减一
        }
    }
    

    //main函数中测试
    #include "String.h"
    
    int main()
    {
        string strs;
        Init_With_Str(&strs,"tasklist");
        //Append_Char(&strs,'a');
        //Append_Str(&strs,"abc");
        //char*flag= my_Strchr(&strs,'a');
        my_DelChar(&strs,'a');
        Print_String(&strs);
        getchar();
        return 0;
    }
    
    
    
    
    
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    linux配置显示git分支名
    tensorrt int8量化原理几点问题记录
    cuda Global Memory Access
    cuda shared memory bank conflict
    一种简单的死锁检测算法
    n = 5x+2y+z,程序优化:unroll loop
    c++ detect && solve integer overflow
    Tensorpack.MultiProcessPrefetchData改进,实现高效的数据流水线
    tensorflow layout optimizer && conv autotune
    python 产生token及token验证
  • 原文地址:https://www.cnblogs.com/L-Lune/p/4671289.html
Copyright © 2011-2022 走看看