c语言实现库函数

article/2025/5/19 0:30:01

目录

一.strlen函数

1.描述

2.实现

1.计数的方法

2.函数递归的方法

3.指针 - 指针方法

二.strcmp函数

1.描述

 2.实现

三.strcpy函数的实现

1.描述

2.实现

四.strcat函数的实现

1.描述

2.实现

五.strstr函数的实现

1.描述

2.实现

1.BF算法实现

2.kmp算法的实现


一.strlen函数

1.描述

C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。strlen函数实际上时以size_t为返回类型遍历字符串,直到遇到'\0'停止遍历,返回字符串长度的函数。其*str为需要计算的字符串

2.实现

1.计数的方法

size_t my_strlen(const char* dest)
{assert(dest);int count = 0;while (*dest){count++;dest++;}return count;
}

2.函数递归的方法

size_t my_strlen(const char* dest)
{assert(dest);if (*dest) return 1 + my_strlen(dest + 1);else return 0;
}

3.指针 - 指针方法

size_t my_strlen(const char* dest)
{assert(dest);const char* ret = dest;while (*dest++){;}return dest - ret;
}

二.strcmp函数

1.描述

strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

 2.实现

int my_strcmp(const char* str1, const char* str2)
{assert(str1 && str2);while (*str1 == *str2){if (*str1 == '\0'){return 0;}str1++;str2++;}return (*str1 - *str2);
}//范围值为0时说明两个字符串相同,输出大于0的时候说明str1大于str2,小于相反

三.strcpy函数的实现

1.描述

C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest

需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况

2.实现

char* my_strcpy(char* dest, const char* src)
{assert(dest&&src);char* ret = dest;while (*dest++ = *src++){;}return ret;
}

四.strcat函数的实现

1.描述

 C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。

2.实现

char* my_strcat(char* dest, const char* str)
{char* ret = dest;while (*dest){dest++;}while (*dest++ = *str++){;}return ret;
}

五.strstr函数的实现

1.描述

C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 '\0'。

2.实现

1.BF算法实现

char* my_strstr2(const char* str1, const char* str2)
{//BF方法,返回指针int lenstr1 = strlen(str1);int lenstr2 = strlen(str2);int i = 0;int j = 0;while (i < lenstr1 && j < lenstr2){if (*(str1 + i) == *(str2 + j)){i++;j++;}else{i = i - j + 1;j = 0;}//假如没找到就j = 0,i返回之前找的位置的后一位	}if (j >= lenstr2)//走完了子串{char* ret = (char*)str1 + (i - j);//str是const char*类型因此我们需要强制类型转换一下转换成为char*return ret;}return NULL;
}

2.kmp算法的实现

void Getnext(int* next, const char* sub)
{int len = strlen(sub);next[0] = -1;next[1] = 0;int i = 2;//从next[2]开始遍历int k = 0;while (i < len){//i一直往前走,k可以变换if ((k == -1) || (sub[k] == sub[i - 1]))//因为数组整体往右加一{//当sub[k] == sub[i]//next[i+1] == k + 1 next[i] = k + 1;i++;k++;}else{k = next[k];}}}
int kmp(const char* str,const char* sub, int pos)
{//str为主串,sub为子串assert(str && sub);int i = pos;int j = 0;int lenstr = strlen(str);int lensub = strlen(sub);int* next = (int*)malloc(sizeof(int) * lenstr);assert(next);Getnext(next,sub);while (i < lenstr && j < lensub){if ((j == -1) || (sub[j] == str[i])){//j == -1时next[0] = -1j++;i++;}else{j = next[j];}}free(next);if (j >= lensub){return i - j;}return -1;}


http://chatgpt.dhexx.cn/article/Qlf9H6CR.shtml

相关文章

C语言 库函数:qsort 详解

目录 1.qsort的介绍与使用方法 2.介绍void*​ 3.举例使用qsort​ 4. qsort的模拟实现&#xff0c;了解其运作原理​ 1.qsort的介绍与使用方法 2.介绍void* 3.举例使用qsort #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include…

C语言库函数查找工具MSDN

一、前言   库函数在我们写程序的时候会在很大程度上提高我们的效率&#xff0c;我知道很多人可能像我一样&#xff0c;很多时候并不是不知道可以用库函数来实现&#xff0c;但就是不知道库函数如何使用&#xff0c;所以今天呢博主就来推荐资源了——C语言库函数查找工具《MS…

文件编程概念(C语言库函数系统调用API)

文件编程&#xff08;文件IO&#xff09; 文件编程就是操作文件&#xff0c;对文件进行打开&#xff0c;关闭&#xff0c;读、写等操作&#xff08;个人理解&#xff09;。之前C语言编写程序运行都是对键盘和显示器进行的&#xff0c;运行程序时会默认打开的三个文件 标准输入流…

c语言库函数大全文库,C语言库函数源代码

C语言库函数源代码 C语言库函数源代码 strstr ( )/* -- C语言库函数源代码 - */ /* 得到s1中第一次包含s2字符串的位置指针。 */ #include stdlib.h char * my_strstr(const char *s1,const char *s2) { if (*s1 0) { if (*s2) return (char *) NULL; return (char *) s1; } …

C语言常用的库函数 (自用)

常用的库函数 1.前言2.内容1.toupper()2.tolower()3.sprintf()4.abs()5.fabs()6.labs()7.scanf()8.itoa() 3.小声bb4.更新日志 1.前言 在刷题过程中&#xff0c;总能看到dl用一些库函数&#xff0c;简化算法&#xff0c;由此萌生慢慢学习整理常用的库函数的想法&#xff0c;本…

c语言的库函数

一、标准C库函数(15个) 二、数学函数 用于求幂&#xff0c;计算平方跟&#xff0c;求绝对值。#include <math.h>绝对值函数用于表达式的结构转换为非负函数 int x-3; printf("|%d|%d\n",x,abs(x)); 三、字符串处理函数 四、字符处理函数 五、转换函数和存储管…

MySQL 远程访问失败的原因及解决方案

文章目录 1、失败的原因1.1、 /etc/mysql/my.cnf文件中bind-address 127.0.0.1没有注释掉1.2、 端口3306没有开放&#xff0c;使用 ss -tlnp 命令查看网络端口开启状态1.3、 在MySQL数据库user表中host字段值为localhost 2、解决方案2.1、/etc/mysql/my.cnf文件中&#xff0c;…

mysql5.7.6允许远程_mysql5.7 设置远程访问

mysql5.7设置远程访问不是和网上说的一样建个用户赋个权限就可以访问的。比如下边这个就是建用户赋权限&#xff0c;可能在之前的版本可以&#xff0c;但是我在我的mysql上一直不行。为此烦了好久&#xff01;&#xff01;&#xff01;项目都耽误了&#xff01;&#xff01; 一…

Mysql远程访问权限

在阅读本文时&#xff0c;推荐先走读完浅谈Mysql权限控制一文。 Mysql启动默认的端口3306是打开的&#xff0c;此时打开了mysqld的网络监听&#xff0c;允许用户远程通过账号密码连接本地数据库&#xff0c;Mysql数据库默认是允许远程用户连接服务器的。 那么&#xff0c;为什…

Mysql远程访问限制ip

一、Mysql允许指定IP远程访问 1、登录mysql -u root -p 之后输入密码进行登陆 2、查看用户表 首先要先指定使用mysql数据库&#xff0c;然后再进行查询操作//进入mysql数据库 mysql> use mysqlmyql> select Host,User from user;下面的列表就是查询user表后可以访问…

CentOS7 开启mysql远程访问

一.开启mysql的远程访问权限 可以先查看下表的内容 1.用mysql自带的客户端连接mysql mysql mysql -uroot -p 输入root用户的密码 进入mysql命令行模式 mysql >select user,host from mysql.user; 2.如果要直接使用root用户远程连接,直接执行以下sql 方法一: mysql>upda…

MySQL设置远程访问权限

当我们在日常开发中&#xff1b;需要连接其他同事的数据库或者其他服务器的数据库&#xff1b;可能会出现以下情况 我们输入的用户和密码都正确&#xff1b;但是提示我们用户没有权限&#xff1b;这个用户指的是远程连接的电脑ip没有访问权限&#xff1b;不是mysql的用户没有权…

Mysql允许远程访问

目录 远程访问条件配置1、配置绑定地址2、授权用户改表授权 远程访问条件 mysql允许远程访问有两个必要条件 外部能访问到mysql开启的端口用户有权限访问 配置 1、配置绑定地址 mysql配置绑定的地址是127.0.0.1&#xff0c;只允许本机连接。为使其他主机可以访问mysql服务…

授权MySQL可以远程访问

MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问.要实现远程访问必须给root修改可以远程访问的权限。 授权步骤&#xff1a; 1.进入数据库连接mysql -u root -p&#xff1b; use mysql&#xff1b; 2.查询用户表命令&#xff1a;select User,au…

配置MySQL远程访问

如果通过数据库客户端Navicat等 远程连接 MySQL&#xff0c;出现了 2003 错误&#xff0c;说明服务器上的数据库没有配置远程连接。 因为MySQL默认是只允许本地连接的。 远程连接MYSQL必须完成下面的配置。 1. 授权远程用户登录 # 在服务器上进入MySQL控制台 $ mysql -u roo…

Ubuntu设置MySQL远程访问

文章目录 一、设置mysql远程访问 -> 第一种方式二、设置mysql远程访问 -> 第二种方式三、Windows上MySQL管理器下载与远程访问使用方法下载与安装使用 一、设置mysql远程访问 -> 第一种方式 编辑mysql配置文件&#xff0c;把其中bind-address 127.0.0.1注释了 sudo…

MySQL远程访问配置

MySQL远程访问配置 1. 进入MySQL安装目录下的bin目录&#xff08;如果配置过环境变量就直接到第二步&#xff09; 2. 在地址栏输入cmd打开命令行窗口&#xff08;如果配置过环境变量直接WinR输入cmd回车即可&#xff09; 3. 输入命令mysql -uroot -p回车&#xff0c;然后输入…

远程访问Mysql

1.远程虚拟机登上mysql客户端&#xff0c;show databases查看有哪些数据库&#xff0c;use mysql进入该数据库 show tables;查看表 select user,host from user;看host属性&#xff0c;root用户只能在本地访问数据库。 更改host, 执行 update user set host% where userroot…

MySQL远程连接的设置

与SQL Server类似&#xff0c;MySQL在需要远程操纵其他电脑时&#xff0c;也需要对其做远程连接的相应设置&#xff0c;具体操作如下。首先&#xff0c;我们需要解决不能远程访问的问题。在控制台命令中输入命令: mysql –uroot –p&#xff08;对应安装软件时设置的密码&#…

mysql远程访问

问题场景&#xff1a; windows局域网内访问mysql数据库 连接失败报10060 原因分析&#xff1a; 查阅了一些资料&#xff0c;问题出现在网络访问上。 mysql远程访问权限 mysql本身设定有访问权限&#xff0c;一般来讲安装的时候如果没有允许远程访问&#xff0c;非localhost…