字符串操作的实现

字符串n比较strncmp()

int mystrncmp(const char *p1, const char *p2, int n)
{
  assert((p1 != NULL) && (p2 != NULL));
  while (((*p1)==(*p2))&&(p1!='\0')&&(n>0))
  {
    p1++;
    p2++;
    n--;
  }
 
  if (n==0)
    return 0;
  else
    return *p1 - *p2;
}

字符串n拷贝strncpy()

char *mystrncpy(char *dest, const char *src, size_t count)
{
  assert((p1 != NULL) && (p2 != NULL));
  char *tmp = dest;
  while(count)
  {
    if((*tmp=*src)!='\0')
    {
      src++;
      tmp++;
    }
    count--;
  }
  
  if(*tmp!='\0')
    *tmp='\0'; //put '\0' at the end
  
  return dest;
}

字符串拷贝strcpy()

char *mystrcpy(char *strDest, const char *strSrc)
{
  int len = 0;
    
  if (strSrc == NULL) // cannot copy a NULL string
  {
    strDest[0] = '\0';
  }
  else
  {
    len = strlen(strSrc);
    for (int i=0; i<(len+1); i++)
    {
      strDest[i] = strSrc[i];
    }
  }
  return strDest;
}

int main(int argc, char** argv)
{
  char *ppp = "afda";
  char str[10];
  char *p = NULL;
  mystrcpy(str, "12345"); // common use
  
  mystrcpy(str, "1234567890");// overflow of the str array
  
  mystrcpy(str, ""); // empty string
  //mystrcpy(str, NULL); // can compile but fail to run
  mystrcpy(str, p);
  mystrcpy(str, (char *)NULL);
  mystrcpy(str, 0);
  mystrcpy(str, '\0');
  return 0;
}














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值