实现c语言中的库函数(strlen strcpy strncpy strcat strncat strcmp strncmp)

本文介绍了如何在C语言中实现库函数strlen、strcpy、strncpy、strcat、strncat、strcmp和strncmp,并通过实例比较了自定义函数与标准库函数的使用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常听身边的朋友说去参加公司笔试时会遇到要求实现c语言中的库函数(strlen strcpy strncpy strcat strncat strcmp strncmp),有时会想不起来该如何写,那么我们今天就来实现下这几个库函数。( 如有错误,欢迎指出!!!)

1.strlen(字符串长度)

  1 size_t mystrlen(const char *str){
   
  2     if(str==NULL){
      //也可以使用assert  assert(str!=NULL);但需要加assert.h头文件
  3         return -1;
  4     }   
  5     size_t cnt = 0;
  6     while(*str!='\0'){
   
  7         cnt++;
  8         str++;
  9     }   
 10     return cnt;
 11 } 
 12
 13
 14 int main(){
   
 15     char s[100] = "abcdefg";
 16     printf("库函数:%u\n",strlen(s));
 17     printf("自定义函数:%u\n",mystrlen(s));
 18     return 0;
 19 }

在这里插入图片描述
调用库函数与自定义函数比较,结果相同(注意:strlen所统计的字符串长度不包括结尾 的’\0’!)。

2.strcpy和strncpy

strcpy是将第二个字符串全部拷贝到第一个字符串中,如果第二个字符串长度小于第一个,则只第一个多出的部分不再显示。strncpy有三个参数,将第二个字符串的n位拷贝到第一个字符串。
char *mystrcpy(char *str_1,const char *str_2)
char *mystrncpy(char *str_1,const char *str_2,size_t n)

strcpy:

 15 char *mystrcpy(char *str_1,const char *str_2){
   
 16     if(str_1==NULL||str_2==NULL){
   
 17         return NULL;
 18     }
 19     char *pstr_1 = str_1;//后面程序会使指针偏移,所以先保存初始位置
 20     while(*str_2!='\0'){
   
 21         *str_1 = *str_2;;
 22         str_1++;
 23         str_2++;
 24     }
 25     *str_1 = '\0';
 26     return pstr_1;
 27 }
 28 
 29 int main(){
   
 30     char s1[100] = "hello world";
 31    char s2[100] = "hello java";
 32     printf("库函数:%s\n",strcpy(s1,s2));
 33     char s3[100] = "hello world";
 34     char s4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值