首页 > 其他分享 >strlen/strcpy/strcat的模拟实现

strlen/strcpy/strcat的模拟实现

时间:2023-07-22 21:33:49浏览次数:33  
标签:src dest strcat char int strcpy arr1 strlen

char* my_strcat(char* dest, const char* src)
{
assert(dest != NULL);//字符串要以‘\0’结束,目标空间要足够大,且可修改
assert(src != NULL);
char* ret = dest;
//1,找到目的字符串的\0;
while (*dest != '\0')
{
dest++;
}
//2,追加
while (*dest++ = *src++)
{
;
}
return ret;
}
int main()
{
char arr1[30] = "hello";//目的空间足够大,要以“\0”结束,可修改
char arr2[] = "world";
//strcat(arr1, arr2);
my_strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}

char* my_strcpy(char* dest, const char* src)
{
assert(dest != NULL);//字符串要以‘\0’结束,目标空间要足够大,且可修改
assert(src != NULL);
char* ret = dest;
//拷贝src指向的字符串到dest指向的空间,包含\0,返回目的空间的起始位置
//while (*src != '\0')
//{
// *dest = *src;
// dest++;
// src++;
//}
//*dest = *src;//"\0"
while (*dest++ = *src++)//精简写法
{
;
}
return ret;
}
int main()
{
char arr1[] = "abcdefghi";
char arr2[] = "bit";
strcpy(arr1, arr2);
my_strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;
}

int my_strlen(const char* str)
{
/*int count = 0;
assert(str != NULL);
while (*str != '\0')
{
count++;
str++;
}
return count;*/
//递归写法
if(*str !='\0')
return my_strlen(str + 1) + 1;

}
int main()
{
int len = strlen("abcdfe");
printf("%d\n", len);
int len1 = my_strlen("abcdef");
printf("%d\n", len1);
if (strlen("abc") - strlen("abcdef") > 0)
printf("hehe");
//size_t == unsigned int
return 0;
}

标签:src,dest,strcat,char,int,strcpy,arr1,strlen
From: https://www.cnblogs.com/zrk-8008/p/17574289.html

相关文章

  • 104.字符串函数:strlen函数,strcpy函数,strcat函数,strcmp函数
    104.字符串函数:strlen函数,strcpy函数,strcat函数,strcmp函数1.字符串函数strlen(1)strlen函数strlen函数返回的是在字符串中’\0’前面出现的字符的个数(2)strlen的使用a.代码#include<stdio.h>#include<string.h>intmain(){ charstr1[]="abcdef"; printf("%d\n",s......
  • 112.说一说strcpy、sprintf与memcpy这三个函数的不同之处
    112.说一说strcpy、sprintf与memcpy这三个函数的不同之处1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2.复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3......
  • 100.你知道strcpy和memcpy的区别是什么吗?
    100.你知道strcpy和memcpy的区别是什么吗?1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2.复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的......
  • strcpy、strncpy与memcpy的区别你了解吗?
    一、定义1.memcpy函数void*memcpy(void*destin,void*source,unsignedn);作用:函数memcpy从source指向的对象中复制n个字符到destin指向的对象中返回值:函数memcpy返回destin的指针。2.strcpy函数charstrcpy(chardest,constchar*src);作用:函数strcpy把src指向的......
  • C语言的strcpy()函数
    strcpy()函数的简介strcpy()函数用于将一个字符串拷贝到另一个内存地址的函数,拷贝停止的条件是遇到'\0',同时会将'\0'一同拷贝到目标地址。下面是strcpy()函数的声明:char*strcpy(char*destination,constchar*source);1.函数的参数:char*destination---------目标字......
  • assert断言与const修饰指针的妙用(模拟实现strcpy函数)
     assert断言目录assert断言的妙用:头文件:使用方法:const修饰指针的妙用主要用法const在*左边const在*右边断言和const修饰指针的应用模拟实现C语言strcpy函数  1、若字符串str1,str2有空指针怎么办?  2.str2改变了怎么办?assert断言的妙用:头文件:#include<assert.h>使用方法:当......
  • 自己实现strcpy
    /*printfexample*/#include<stdio.h>char*my_strcpy(char*des,constchar*src){char*ret=des;while(*src!='\0'){*des++=*src++;}*des=*src;returnret;}intmain(){chardes[]="#####......
  • strcpy函数
    strcpy函数#include<stdio.h>#include<string.h>#include<stdlib.h>char*mystrcpy(char*a,char*b){if(NULL==a||NULL==b){printf("参数错误\n");exit(-1);}char*p=a;while(*p++=*b++);returna;}intmain(......
  • strlen函数
    strlen函数#include<stdio.h>intmystrlen(char*n){inti=0;while(*n){i++;n++;}returni;}intmain(){charn[20]={"Ilovechina";}ints=0;s=mystrlen(n);printf("%d\n",s);return0;}......
  • strcat函数
    strcat函数#include<stdio.h>voidmystrcat(char*i,char*j){if(i==0||j==0){return;}while(*i){i++;}while(*j){*i++=*j++;}*i='\0';}intmain(){chara[20]={0};charb[40]={0};printf(&qu......