当前位置:网站首页>深度解析字符串和内存函数
深度解析字符串和内存函数
2022-07-20 05:53:00 【终成大师的康康】
康康最近学习了许多字符串函数和内存函数,其中基础的函数康康就不多说了。我想为大家讲讲strstr、strtok、strerror、memmove、memmset、memcmp。
strstr函数是用来进行子字符串的查找。它的使用方式如下:
char*strstr(constchar*string,constchar*strCharSet);它的第一个参数指向大字符串,第二个参数指向小字符串(被查找的字符串)它的返回值是大字符串的地址。现在让我们尝试使用吧!
那么该如何模拟实现它的功能呢?
char* my_strstr(const char* des, const char* src)
{
assert(des && src);
char* s1 = des;
char* s2 = src;
char* p = des;
while (*p != '\0')
{
while (*s1 != *s2)
{
p++;
s1 = p;
}
while (s1 != '\0' && s2 != '\0' && *s1 == *s2);
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return p;
}
p++;
s2 = src;
}
return NULL;
}
strtok函数的使用非常的奇怪,它的使用规则如下:
char*strtok(char*str,constchar*sep );
1.sep参数是个字符串,定义了用作分隔符的字符集合
第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标
记。
2.strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:
strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容
并且可修改。)
3.strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串
中的位置。
strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标
记。
4.如果字符串中不存在更多的标记,则返回 NULL 指针。
现在我为大家举个例子:
strerror函数是用来返回错误码所对应的错误信息。函数使用如下:
char*strerror(interrnum);
那现在让我们运行一下吧!!
接下来我们来讲讲字符函数的使用,首先是memmove。
字符串函数只针对字符串,而内存函数却针对于内存。
void*memmove(void*dest,constvoid*src,size_tcount);
现在为大家举个例子:
那么该如何模拟实现它呢?代码如下:
模拟实现memmove
#include <stdio.h>
#include <assert.h>
void* my_memmove(void* dest, const void* src, size_t num)
{
void* ret = dest;
assert(dest && src);
if (dest < src)
{
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
return ret;
}
memset函数如何使用呢?
memset是函数内存的设置,函数使用如下:
void*memset(void*dest,intc,size_tcount);
以下是代码的运行:
这就是内存数据的设定!
最后一个函数是memcmp,它的使用非常的简单。
它是一个字节一个字节的比较,intmemcmp(constvoid*buf1,constvoid*buf2,size_tcount);
当buf1>buf2的时候,返回一个大于0的数字。
当buf1=buf2的时候,返回0。
当buf1<buf2的时候,返回一个小于零的数字。一下是为大家局的一个例子:
以上是我对这些函数的见解,如有不对,望大伙们指正!
边栏推荐
- Some analysis of Beijing double line machine room
- 静态路由—综合实验
- FigDraw 15. SCI 文章绘图之多组学圈图(OmicCircos)
- Game improvement of smart people: Chapter 3 Lesson 1: grid (grid position)
- FigDraw 11. SCI 文章绘图之小提琴图 (ViolinPlot)
- Reflect的十三个语法学习
- 动态调试JS代码
- 安全开发之IP地址伪造
- 掌握这些插件,分分钟提高你的办公效率90%!
- Super dry goods: design summary, tools and technical points of data visualization are all available
猜你喜欢
DNA 6. 基因组变异之绘制精美瀑布图(ComplexHeatmap)
Analysis of advantages and disadvantages of Beijing double line machine room
What is the easiest explanation for SaaS? Just read this one
RNA 20. SCI 文章中单样本免疫浸润分析 (ssGSEA)
MySQL installation
FigDraw 14. SCI 文章绘图之和弦图及文章复现(Chord Diagram)
DHCP principle and configuration
JS笔试题--对象的深拷贝
如何合并多个工作表或多个工作簿?3种合并方法都在这
为什么说CRM对于企业来说非常重要?看完值得思考
随机推荐
DNA 10. 识别癌症驱动基因 (OncodriveCLUST)
DNA 9. 揭秘肿瘤异质性与TMB, MSI之间的相关性
SaaS最通俗易懂的解释是什么?看这篇就够了
router-link打开新页面跳转和a标签防止默认跳转及各个属性
Excel中实用的3个数据透视表操作技巧,简单高效!
面试题--事件循环
Network security architecture: axiom of security architecture
Ibatis and SQL injection
Installation and management procedures
C语言程序设计技巧之字符串长度
Shell conditional testing and if statement syntax
JS基础--JSON
Disk management and file system
DNA 6. Genome variation: complexheatmap
Principle and protection of DOM XSS
GDB安装过程问题
落幕,致我的大学生活
静态路由—综合实验
IF:14+ “冒烟型”骨髓瘤的分子组成突显了导致多发性骨髓瘤的进化途径
Three methods: arrange strings in reverse order (instead of printing in reverse order)