自己封装字符串函数

1、puts

void myPuts(char* p)
{

    while(*p != '\0'){

        putchar(*p++);
    }
    putchar('\n');
}

2、gets

int myGets(char* p)
{
    int cnt = 0;  //用来计数输入的字符个数
    if(p == NULL){

        printf("内存非法\n");
        return 0;
    }
    while(*p = getchar()){

        if(*p == '\n'){

            return cnt;
        }else{

            cnt++;
            p++;
        }

    }
   
}

int main()
{

    char* pstr;
    pstr = (char*)malloc(128);
    memset(pstr,'\0',128);
    myPuts("请输入字符\n");

    int data = myGets(pstr);
    printf("输入了%d个字符\n",data);
    myPuts(pstr);
    
    system("pause");
    return 0;
}

3、strlen

int myStrlen(char* p)
{
    int cnt = 0;
    while(*p++ != '\0'){
        cnt++;
        //p++;
    }
    return cnt;

}

int main()
{

    char* pstr = "hello,world";
    int data = myStrlen(pstr);
    printf("字符串长度为%d\n",data);
    system("pause");
    return 0;
}

4、memset

void myMemset(char* p,char c,int size)
{
    while(size){

        *p++ = c;
        //p++;
        size--;
    }


}

int main()
{

    char* pstr;
    pstr = (char*)malloc(128);
    //memset(pstr,'o',128);

    myMemset(pstr,'o',128);

    pstr[128] = '\0'; //初始化为o了,没有了结束符号
    puts(pstr);

    system("pause");
    return(0);
}
 

5、strcpy

char* myStrcpy(char *test,char* p)
{
    if(test == NULL || p == NULL){

        return NULL;
    }
    while(*p != '\0'){

        *test++ = *p++;
        //test++;
        //p++;
    }
    *test = '\0'; //让最后面等于‘\0’
    return test;

}

int main()
{
    char* str = "hello,world";
    char test[128] = "china";
    
    //strcpy(test,str);
    myStrcpy(test,str);
    puts(test);

    system("pause");
    return(0);
}

6、strncpy

char* myStrcpy(char *test,char* p,int data)
{
    if(test == NULL || p == NULL){

        return NULL;
    }
    while(*p != '\0' && data > 0){

        data--;
        *test++ = *p++;
        //test++;
        //p++;
    }
    *test = '\0';
    return test;

}

int main()
{
    char* str = "hello,world";
    char test[128] = "china";
    
    //strcpy(test,str);
    myStrcpy(test,str,2);
    puts(test);

    system("pause");
    return(0);
}

7、strcat

void myStrcat(char* test,char* str)
{
    while(*test != '\0'){   

        test++; //遍历到test的末尾
    }
    while(*str != '\0'){

        *test++ = *str++;
        //test++;
        //str++;
    }    
    *test = '\0';
    
}

int main()
{
    char* str = "hello,world";
    char test[128] = "china";

 // strcat(test,str);
    myStrcat(test,str);
    puts(test);

    system("pause");
    return(0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值