当前位置:首页 » 《资源分享》 » 正文

字符串函数的使用以及模拟实现(一)_执久呀的博客

1 人参与  2021年09月15日 09:23  分类 : 《资源分享》  评论

点击全文阅读


目录

    一、前言

    二、字符串函数

        1.strlen函数

strlen函数模拟实现

2.strcpy函数

         strcpy函数模拟实现

一、前言

     字符串函数也是库函数,他给我们日常编程提供了极大的帮助,所以我们必须认识并且学会这些函数的使用。(头文件是string.h)

二、字符串函数

1.strlen函数

函数的参数形式 size_t  strlen(const char* str);

size_t表示的是无符号数,const放的位置表示*str所指向的内容不可以被改变。

strlen函数的特点是遇到’\0’就停止了,且只能用来求字符的长度

具体实现如下:

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

int main()
{
  char arr[]={"yangying"};//杨颖
  int len=strlen(arr);
  printf("len=%d",len);
  return 0;
}

    这样一个简单的strlen用法就写完了,但是不代表这个函数到此结束啊,满级选手你说是吧

那么既然还没结束,我们显然还要讲讲这个函数实现的原理(直接模拟实现一下)。ok!!!!

咱们废话不多说,直接开整。

strlen函数模拟实现

#include<stdio.h>

#include<assert.h>

int my_strlen(char *p)//用p指针去接受传过来的arr数组首元素地址。也可以用arr[]接收
 {
   assret(p!=NULL);
    int count=0;//用来计数的
   while(*p)//也可以写成*p!='\0'
   {
      p++;     //这里也可以写成while(*p++)
     count++;
   }
 return count;//返回count的值
 }

int main()
 {
  char arr[30]={0};

  printf("请输入要计算的字符串长度\n");

  scanf("%s",&arr);

  int len=my_strlen(arr);//模拟函数的创建,用len接受他的返回值

  printf("len=%d\n",len);
 
  return 0;
 }

注意:strlen是无符号是,所以strlen("字符串")-strlen("字符串")必是大于0的数。

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

int main()
{
	size_t count = strlen("kong") - strlen("hellochao");//得到的结果必定大于0
	printf("count=%u", count);
	return 0;
}

得到的结果为

 为负数存的是补码,以%u打印打印出无符号的补码

2.strcpy函数

函数的参数形式char* strcpy(char*destination,const char*source);

该参数说明了strcpy返回类型是char类型的指针,将源头(不能被改)拷贝到目的地。

strcpy特点和strlen类似,遇到‘\0’就停止拷贝,也是只能拷贝字符,目的地的空间必须大些以便

于存下源头文件。

具体实现如下:

#include<stdio.h>

#include<string.h>

int main()
{
  char arr1[30]={"hello"};

  char arr2[30]={"kongchao"};

  strcpy(arr1,arr2);

  printf("%s",arr1);

 return 0;
}

strcpy函数模拟实现

#include<string.h>

#include<string.h>

#include<assert.h>

char*my_strcpy(char*dest,const char*src)

 {
   assert(dest&&src);//断言,防止传过来是NULL;

    char*pp=dest;//记下dest的初始地址防止找不到

    while(*dest++=*src++)
     {
        ;     //这里啥也不做;
     }
  return pp;//返回初始地址
 }


int main()

 {
   char arr1[30]={"nihao"};
     
   char arr2[20]={"haohaoxuexi"};

    my_strcpy(arr1,arr2);

   printf("%s",arr1);

   return 0;
   
 }

小伙伴们学习愉快,希望大佬们指正

顺便支持一波


点击全文阅读


本文链接:http://zhangshiyu.com/post/27824.html

函数  字符串  模拟  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1