标签:const sub C语言 char str return include 模拟 库函数
库函数的模拟实现
模拟实现strcpy
#include<stdio.h>
#include<windows.h>
#include<assert.h>
size_t myStrlen(const char* str)
{
assert(str);
//1
/*int length = 0;
while (*str)
{
str++;
length++;
}
return length;*/
//2
const char* start = str;
const char* end = str;
while (*end){
end++;
}
return end - start;
}
int main()
{
const char *str = "Hello world!";
printf("%d\n", myStrlen(str));
system("pause");
return 0;
}
模拟实现strcat
#include<stdio.h>
#include<windows.h>
#include<assert.h>
char* myStrcat(char* dst, const char* src)
{
assert(dst);
assert(src);
char* ret = dst;
while (*dst != '\0')
{
dst++;
}
while (*src != '\0')
{
*dst++ = *src++;
}
return ret;
}
int main()
{
const char *src = "Hello world!";
char dst[32];
myStrcpy(dst, src);
myStrcat(dst, src);
system("pause");
return 0;
}
模拟实现strstr
#include<stdio.h>
#include<windows.h>
#include<assert.h>
const char* myStrstr(const char* str, const char* sub)
{
assert(str);
assert(sub);
const char* str_start = str;
const char* str_p = str;
const char* sub_p = sub;
while (*str_start)
{
str_p = str_start;
sub_p = sub;
while (*sub_p && *str_p == *sub_p)
{
str_p++; sub_p++;
}
if (*sub_p == '\0')
{
return str_start;
}
str_start++;
}
return NULL;
}
int main()
{
char* str = "hello 123 abc!";
const char* sub = "123";
printf("%s\n", myStrstr(str, sub));
system("pause");
return 0;
}
模拟实现strcmp
#include<stdio.h>
#include<windows.h>
#include<assert.h>
int myStrcmp(const char* str1, const char* str2)
{
assert(str1);
assert(str2);
int ret = 0;
while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str1)
{
str1++; str2++;
}
if (ret > 0)
{
return 1;
}
else if (ret < 0)
{
return -1;
}
else
return 0;
}
int main()
{
const char* str1 = "hello 123 abc!";
const char* str2 = "hello 123 abc!";
printf("ret = %d\n", myStrcmp(str1, str2));
system("pause");
return 0;
}
标签:const,sub,C语言,char,str,return,include,模拟,库函数 来源: https://blog.csdn.net/weixin_46448719/article/details/120404477
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。