当前位置: 首页 > article >正文

C语言——常用库函数

C语言——常用库函数

memcmp

int my_memcmp(char* str1,char* str2,int num)
{
    while(num--)
    {
        if(*str1>*str2)
        {
            return 1;
        }
        else if(*str1<*str2)
        {
            return -1;
        }
        else
        {
            str1++;
            str2++;
        }
    }
    return 0;
}

memcpy

void* my_memcpy(void *str1,void *str2,int size)
{
     int *p1=str1;
     int *p2=str2;
     int i=0;
     for(i=0;i<size;i++)
     {
        p1[i]=p2[i];
     }
     return str1;
}

memset

void my_memset(char* str,int data,int size)
{
      char *p=str;
      int i=0;
      for(i=0;i<size;i++)
      {
          p[i]=data;
      }
}

strcat

char* my_strcat(char* src,char* des)
{
    assert(src!=NULL&&des!=NULL); 
    char *bak=src;
    while(*src!='\0')
    {
        *src++;
    }
    while(*des!='\0')
    {
       *src++=*des++;
    }
    *src='\0';

    return bak;     
}

strcmp

int my_strcmp(char* str1,char* str2)
{
     assert(str1!=NULL&&str2!=NULL);
     while(*str1!='\0'&&*str2!='\0'&&*str1==*str2)
     {
           str1++;
           str2++;
     }
     if(*str1>*str2)   return 1;
     if(*str1<*str2)   return -1;
     return 0;
} 

strcpy

char* my_strcpy(char* src,char* des)
{
    assert(src!=NULL&&des!=NULL);
    char* bak=src;
    while(*des!='\0')
    {
         *src++=*des++;
    }  
    *src='\0';
    return bak;
}

strlen

int my_strlen(char *str)
{
    int len=0;
    assert(str!=NULL);
    while(*str!='\0')
    {
        len++;
        str++;
    }
    return len; 
}

strstr

char* my_strstr(char* str1,char* str2)
{
    int len1=strlen(str1);
    int len2=strlen(str2);
    int i=0;
    int j=0;
    if(len1<len2)
    {
        return NULL;
    }
    for(i=0;i<len1;i++)
    {
        for(j=0;j<len2;j++)
        {
            if(*(str1+i+j)!=*(str2+j))
            {
                break;              
            }
        }
        if(j==len2)
        {
            return  (char*)(str1+i);
        }
    }
    return NULL;
}

strncat

char*  myStrncat(char* src,char* des,int count)
{
    assert(src!=NULL&&des!=NULL);

    char* bak=src;

    while(*src!='\0')
    {
        *src++;
    }

    while(*des!='\0'&&count>0)
    {
        *src++=*des++;
        count--;
    }
    *src='\0';

    return bak;
}

strncmp

int myStrncmp(char* str1,char* str2,int count)
{
    int ret=0;

    assert(str1!=NULL&&str2!=NULL);
     
    while(*str1!='\0'&&*str2!='\0'&&*str1==*str2&&count>0)
    {
          str1++;
          str2++; 
          count--;
    }

    ret=*str1-*str2;
    if(ret>0)
    {
       return 1;
    }
    else if(ret<0)
    {
       return -1;
    }

    return 0;
}

strncpy

char* myStrncpy(char* src,char* des,int count)
{
    assert(src!=0&&des!=NULL);
    
    char* bak=src;

    while(*des!='\0'&&count>0)
    {
       *src++=*des++;
       count--;
    }
    *src='\0';

    return bak;
}

http://www.kler.cn/news/162084.html

相关文章:

  • 强化学习——简单解释
  • 学习spring、springmvc、mybatis、ssm所有可能用到的依赖总结,父工程pom文件依赖,<packaging>pom</packaging>
  • 2023年5个自动化EDA库推荐
  • 新概念第一册
  • python获取公网IP的三种方法
  • Vue.filter
  • vivado实现分析与收敛技巧9-分析使用率统计数据
  • 7-1 查找书籍
  • 拨号连接bat命令和拨号错误623,系统无法找到此连接的电话簿项的解决方法
  • 联邦学习新探:端边云协同引领大模型训练的未来 | INFOCOM 2024
  • STM32存储左右互搏 SPI总线读写FRAM MB85RS16
  • Spring 依赖注入的三种方式优缺点
  • 【UE5】瞬移+马赛克过渡效果
  • mixamo根动画导入UE5问题:滑铲
  • NGINX相关配置
  • Apache solr XXE 漏洞(CVE-2017-12629)
  • webrtc 设置不获取鼠标 启用回声消除
  • Java 简易版 TCP(一对一)聊天
  • python pyaudio显示音频波形图
  • FPGA模块——SPI协议(读写FLASH)
  • UDP协议实现群聊
  • 云架构的思考3--云上开发
  • AI自动生成代码工具
  • HTTP 缓存机制
  • Leetcode刷题笔记——摩尔投票法
  • 【无线网络技术】——无线个域网(学习笔记)
  • 『亚马逊云科技产品测评』活动征文|基于亚马逊云EC2搭建PG开源数据库
  • Linux指令学习
  • 第二十一章总结
  • centOS使用docker部署ElasticSearch和Kibana