当前位置:网站首页>实现常用C语言字符串处理函数
实现常用C语言字符串处理函数
2022-06-23 10:20:00 【stone_322】
1.strcpy()
char *my_strcpy(char *s1, const char *s2)
{
char* p1 = s1;
const char* p2 = s2;
while (*p1++ = *p2++)
{
}
return s1;
}
2.strlen()
unsigned int my_strlen(const char* s)
{
const char* p = s;
while (*p++)
{
}
return p - s - 1;
}
3.strcat()
char* my_strcat(char* s1, const char* s2)
{
char* p1 = s1;
const char* p2 = s2;
unsigned int len = strlen(s1);
p1 += len;
while (*p1++ = *p2++)
{
}
return s1;
}
4.strcmp()
int my_strcmp(const char* s1, const char* s2)
{
const char* p1 = s1;
const char* p2 = s2;
while (*p1 || *p2)
{
if (*p1 - *p2)
{
return *p1 - *p2 > 0 ? 1 : -1;
}
p1++;
p2++;
}
return 0;
}
5.atoi()
int my_atoi(const char* nptr)
{
const char* p = nptr;
int sign = 1;
int num = 0;
while (*p == ' ')
{
p++;
}
sign = (*p == '-') ? -1 : 1;
if (*p == '+' || *p == '-')
{
p++;
}
while (*p >= '0' && *p <= '9')
{
num = num * 10 + *p - '0';
p++;
}
return num*sign;
}
6.itoa()
char* my_itoa(int value, char* str, int base)
{
char* p = str;
int reverse_start = 0;
if (value < 0)
{
reverse_start = 1;
*p++ = '-';
value = -value;
}
else if (value == 0)
{
*p++ = '0';
}
while (value)
{
*p++ = value % base + '0';
value /= base;
}
*p = '\0';
int i, j;
for (i = reverse_start, j = strlen(str) - 1; i < j; i++, j--)
{
char tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
return str;
}
7.memmove()
void* my_memmove(void* dest, void* src, size_t num)
{
char* psrc = (char*)src;
char* pdest = (char*)dest;
if (pdest <= psrc || pdest > psrc + num)
{
for (size_t i = 0; i < num; i++)
{
*pdest++ = *psrc++;
}
}
else
{
pdest += num;
psrc += num;
for (size_t i = 0; i < num; i++)
{
*(--pdest) = *(--psrc);
}
}
return dest;
}
边栏推荐
- Data structures and differences between MySQL InnoDB engine and MyISAM
- Golang quick start (1)
- 2021-05-10 method rewrite polymorphism considerations
- 几款实用软件分享
- 搭建一个点歌QQ机器人,另外还能看美女
- Stockage d'images - référence
- Liujinhai, architect of zhongang Mining: lithium battery opens up a Xintiandi for fluorine chemical industry
- 2021-04-27类和对象
- SQL教程之 5 个必须知道的用于操作日期的 SQL 函数
- 技术创造价值,手把手教你薅羊毛篇
猜你喜欢

Nuxt. Differences between JS spa and SSR

搭建一个点歌QQ机器人,另外还能看美女

Data structures and differences between MySQL InnoDB engine and MyISAM

太无奈!微软停售 AI 情绪识别等技术,直言:“法律跟不上 AI 的发展”

文件IO(1)

Unity technical manual - lifecycle lifetimebyemitterspeed - color in the cycle coloroverlifetime- speed color colorbyspeed

Unity技术手册 - 生命周期LifetimebyEmitterSpeed-周期内颜色ColorOverLifetime-速度颜色ColorBySpeed

圖片存儲--引用

What is a good quick development framework like?

Solve the problem that Preview PDF cannot be downloaded
随机推荐
5次登陆失败,限制登录实践
NOI OJ 1.3 09:与圆相关的计算 C语言
STM32F1与STM32CubeIDE编程实例-红外寻迹传感器驱动
JVM简单入门-01
beanstalk 常用方法、说明
搭建一个点歌QQ机器人,另外还能看美女
Unity技术手册 - 形状(Shape)子模块 - Sprite、SpriteRenderer及生命周期内速度(Velocity over Lifetime)
Unable to enter the system normally, press F8 to select other items to try to enter
Verification code redis practice summary
圖片存儲--引用
基于SqlSugar的开发框架循序渐进介绍(9)-- 结合Winform控件实现字段的权限控制
搭建一个QQ机器人叫女友起床
NOI OJ 1.2 整型与布尔型的转换 C语言
六张图详解LinkedList 源码解析
Confessing with Snake games (with source code)
OpenCloudOS使用snap安装.NET 6
实现领域驱动设计 - 使用ABP框架 - 通用准则
Picture storage -- Reference
开源二进制文件静态漏洞分析工具BinAbsInspector安装使用
MySQL-02. Understanding of indexes at work