strcpy 与 strncpy 学习笔记,assert 断言

 

 

 

代码部分:

#include <stdio.h>
#include <string.h>
#include <assert.h>

char* mystrcpy(char *str,char *p)
{
    //assert 的作用是现计算表达式 expression,如果其值为假(即为0)
    //那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行
    assert(str != 0 && p != 0);//断言
    //if(str == NULL || p == NULL) //如果str或p里头是空的
    //return NULL;                 //就返回一个空的
    
    char *bak = str ;
    while(*p != '\0'){  //*p 取值,不等于\0,就运行
        /* *str = *p;
            str++;
            p++;          */
        *str++ = *p++; //先赋值,再偏移,和上面三行同等
    }
    /* while((*str++ = *p++) != '\0') */ //与上同等
    *str = '\0';       //字符串后加上    \0
    return bak;
}
 
char* mystrncpy(char *str,char *p,int count)
{
    if(str == NULL || p == NULL) 
    return NULL;               
    
    char *bak = str ;
    
    while(*p != '\0' && count>0){
        *str++ = *p++;
        count--;
    }    
    if(count>0){
        while(count>0){
            *str++ = '\0';
            count--;
        }
        return str;  
    }
    *str = '\0';     

    return bak;
}
int main()
{
    char str[128] = {'\0'};
    char *p = "zhangmoulaobi";

    mystrcpy(str,p);
    puts(str);
    
    mystrncpy(str,p,8);
    puts(str);
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值