当前位置:网站首页>strlen(), strcpy(), strncpy(), strcat(), strncat(), strcmp(), strncmp()函数的封装
strlen(), strcpy(), strncpy(), strcat(), strncat(), strcmp(), strncmp()函数的封装
2022-08-09 14:53:00 【黄小鸭233】
size_t strlen(char* str)
{
assert(str != NULL);
int len = 0;
while(*str != '\0')
{
str++;
len++;
}
return len;
}
char* strcpy(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
char* tmp = dest;
while(*src != '\0')
{
*tmp++ = *src++;
}
*tmp = '\0';
return dest;
}
char* strncpy(char* dest, const char* src, size_t n)
{
assert(dest != NULL && src != NULL);
char* tmp = dest;
int len = strlen(tmp);
int m = n;
while(n-- > 0 && *src != '\0')
{
*tmp++ = *src++;
}
if(m > len) //需要复制的字符数少于原字符串长度时不加'\0'
*tmp = '\0';
return dest;
}
char* strcat(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
char* tmp = dest;
while(*tmp != '\0')
{
tmp++;
}
while(*src != '\0')
{
*tmp++ = *src++;
}
*tmp = '\0';
return dest;
}
char* strncat(char* dest, const char* src, size_t n)
{
assert(dest != NULL && src != NULL);
char* tmp = dest;
while(*tmp != '\0')
{
tmp++;
}
while(n-- > 0 && *src != '\0')
{
*tmp++ = *src++;
}
*tmp = '\0';
return dest;
}
int strcmp(const char* s1, const char* s2)
{
assert(s1 != NULL && s2 != NULL);
while(*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
if(*s1 < *s2)
return -1;
if(*s1 > *s2)
return 1;
return 0;
}
int strncmp(const char* s1, const char* s2, size_t n)
{
assert(s1 != NULL && s2 != NULL);
while(--n > 0 && *s1 != '\0' && *s2 != '\0' && *s1 == *s2)//使用前--不会导致最后多一位
{
s1++;
s2++;
}
if(*s1 < *s2)
return -1;
if(*s1 > *s2)
return 1;
return 0;
}边栏推荐
猜你喜欢
随机推荐
What is a template engine?What are the common template engines?Introduction to common commands of thymeleaf.
爱因斯坦的光子理论
几何光学简介
如何保证电脑硬盘格式化后数据不能被恢复?
OpenSSF's open source software risk assessment tool: Scorecards
软件工程基础知识--软件过程模型
Grad CAM model visualization
How to List < Map> grouping numerical merge sort
多线程学习
Regular Expressions for Shell Programming
玩转云端 | 天翼云电脑的百变玩法
常见的四种电阻之间有什么不同?
Qt对话框中show和exec的区别
一些需要思考的物理问题
在量化交易过程中,散户可以这样做
经典面试题 之 JVM调优
注解与反射
What is the difference between the four common resistors?
SNR 信噪比
函数调用约定







