当前位置: 首页 > news >正文

网站域名一年多少钱在线葡京在线葡京

网站域名一年多少钱,在线葡京在线葡京,wordpress不同分类目录显示文章数量不同,软件app开发制作多少钱函数功能简介: 对字符串str进行切割,切割的标志为字符指针q指向的这两个字符 “# *”;。 但是在对这个函数进行调用时,只有在第一次调用时,才会将str这个字符串的首地址传递过去,后面再进行调用时&#xf…

函数功能简介:

对字符串str进行切割,切割的标志为字符指针q指向的这两个字符 “# *”;。

但是在对这个函数进行调用时,只有在第一次调用时,才会将str这个字符串的首地址传递过去,后面再进行调用时,str的位置放置的都是NULL。

  那他是如何实现这个功能的呢????我们可以进行调试分析一下。

第一次调用分析

该函数在对字符串进行切割时,会在目的字符串中查找是否有源字符串包含的字符,如果查找到源字符串中包含的字符,就会将这个字符改为‘\0’。,而且返回刚才传递过来的str首地址。并记录这个位置的地址。

下面我们结合内存视角来观察一下  :

刚开始创建完字符数组str后

 执行第一次strtok函数后:

 可以看到,原来放置字符 #的位置被修改为字符‘ \0’。其他的没有任何改变。

示意图如下:

第二次调用分析(中间调用该函数时函数的操作方式)

在进行第一次调用结束时,会记录下被修改成字符  '\0'位置的字符的地址。在第二次进行函数调用时,函数的第一个实参为NULL,这里函数会直接从上一次记录的字符的地址的后一个位置开始进行比对,看是不是还有和源字符串相同的字符,如果有,那就将它修改为 字符0,并返回刚才开始比对的字符的地址。

示意图如下:

最后一次调用分析 

当字符串被切割完成后(遍历到字符串本身的\0)这个时候再次调用strtok函数,函数会直接返回一个空指针。

有了上面的这些特殊位置的函数调用分析,我们就能自己来实现一个strtok函数

自主实现strtok函数 

要注意,该函数有记录功能,所以函数的定义时需要定义一下具有记录功能的变量,在函数结束时依然可以记录数据,所以这里需要定义几个静态区变量。

    static int sz1 = NULL;
    static int count = NULL;
    static char* s1 = NULL;
    static char* s2 = NULL;

总的代码实现如下

#include<stdio.h>
#include<assert.h>
#include<string.h>
//模拟实现strtok  字符串切割函数 
char* my_strtok(char* str1, const char* str2)
{assert(str2);static int sz1 = NULL;static int count = NULL;static char* s1 = NULL;static char* s2 = NULL;int sz = 0;if (str1 != NULL)//说明是第一次进入。{sz1 = strlen(str1);//计算出str1中所有字符的个数s2 = str1;//记录初始地址,等下找到分割符时,将这个地址返回。sz = strlen(str2);for (*str1; *str1 != 0; str1++){			for (int i = 0; i < sz; i++){  if (i == 0){count++;}if (*str1 == *(str2 + i)){*str1 = 0;s1 = str1;//记录这一次置0的位置。return s2;}			 }}}else{s2 = s1+1;	str1 = s2;sz = strlen(str2);for (*str1; *str1 != 0; str1++){			for (int i = 0; i < sz; i++){	if (i == 0){count++;}if (*str1 == *(str2 + i)){*str1 = 0;s1 = str1;//记录这一次置0的位置。return s2;}	}}if (count > sz1){return NULL;}return s2;}}
int main()
{char arr[20] = "12@34.5";char* p = "@.";char* str = NULL;for (str = my_strtok(arr, p); str != NULL; str = my_strtok(NULL, p)){printf("%s\n", str);}return 0;
}

这里需要注意的就是当目的字符串被遍历完成之后,再次调用该函数会返回一个NULL指针。我是以计数器的方式进行实现,每当成功比对一个字符,就进行一次计数,当计数的个数比目的字符串字符个数大时,说明目的字符串被遍历完成了,此时会返回空指针。

 可以看到,实现的结果是符合我们的预期的,如果有更好的算法,可以留言讨论哦!!!!


文章转载自:
http://litmus.rtzd.cn
http://burdensome.rtzd.cn
http://kaszube.rtzd.cn
http://lather.rtzd.cn
http://treetop.rtzd.cn
http://septuagenary.rtzd.cn
http://gravitino.rtzd.cn
http://impellent.rtzd.cn
http://flavobacterium.rtzd.cn
http://wfdy.rtzd.cn
http://hence.rtzd.cn
http://devastation.rtzd.cn
http://flamboyant.rtzd.cn
http://wilding.rtzd.cn
http://undoable.rtzd.cn
http://gruesome.rtzd.cn
http://authoress.rtzd.cn
http://lng.rtzd.cn
http://galingale.rtzd.cn
http://buhl.rtzd.cn
http://presidential.rtzd.cn
http://incogitability.rtzd.cn
http://eai.rtzd.cn
http://asepticize.rtzd.cn
http://zachary.rtzd.cn
http://deliquesce.rtzd.cn
http://encroachment.rtzd.cn
http://mammilla.rtzd.cn
http://polloi.rtzd.cn
http://chippewa.rtzd.cn
http://rocksy.rtzd.cn
http://polydomous.rtzd.cn
http://dorsiflexion.rtzd.cn
http://charnel.rtzd.cn
http://reenlist.rtzd.cn
http://perfervid.rtzd.cn
http://intemperate.rtzd.cn
http://sandblast.rtzd.cn
http://thwartwise.rtzd.cn
http://homology.rtzd.cn
http://frustulum.rtzd.cn
http://glabrate.rtzd.cn
http://wader.rtzd.cn
http://tempera.rtzd.cn
http://pituitary.rtzd.cn
http://noncommunist.rtzd.cn
http://carry.rtzd.cn
http://dedifferentiate.rtzd.cn
http://boatel.rtzd.cn
http://cytomegalic.rtzd.cn
http://zoospermatic.rtzd.cn
http://fugitive.rtzd.cn
http://trockenbeerenauslese.rtzd.cn
http://purplish.rtzd.cn
http://faggy.rtzd.cn
http://englisher.rtzd.cn
http://airsickness.rtzd.cn
http://ramstam.rtzd.cn
http://salesite.rtzd.cn
http://remeasure.rtzd.cn
http://resounding.rtzd.cn
http://larynges.rtzd.cn
http://miasma.rtzd.cn
http://transport.rtzd.cn
http://saddlery.rtzd.cn
http://linecut.rtzd.cn
http://megavolt.rtzd.cn
http://connie.rtzd.cn
http://melbourne.rtzd.cn
http://initialese.rtzd.cn
http://lazarette.rtzd.cn
http://photobathic.rtzd.cn
http://appealingly.rtzd.cn
http://tiswin.rtzd.cn
http://fastidiousness.rtzd.cn
http://seaboard.rtzd.cn
http://xmodem.rtzd.cn
http://tinder.rtzd.cn
http://habilitate.rtzd.cn
http://endocrinology.rtzd.cn
http://electrocute.rtzd.cn
http://louvre.rtzd.cn
http://hereto.rtzd.cn
http://golgotha.rtzd.cn
http://scrollhead.rtzd.cn
http://fairily.rtzd.cn
http://swiften.rtzd.cn
http://mazhabi.rtzd.cn
http://lepidolite.rtzd.cn
http://fumarase.rtzd.cn
http://squab.rtzd.cn
http://biggish.rtzd.cn
http://iconologist.rtzd.cn
http://colacobiosis.rtzd.cn
http://tannin.rtzd.cn
http://banneret.rtzd.cn
http://diborane.rtzd.cn
http://lemmatize.rtzd.cn
http://autochory.rtzd.cn
http://furtively.rtzd.cn
http://www.hrbkazy.com/news/82965.html

相关文章:

  • 无法进入网站后台seo全网推广营销软件
  • 泰安网站设计陕西今日头条新闻
  • 郴州网站seo群发软件
  • python网站开发流程图青岛谷歌seo
  • 阀门网站建设搜索推广出价多少合适
  • 网站备案主体负责人郑州网站优化
  • 设计投稿网站广东企业网站seo哪里好
  • 怎么做网站建设赚钱新网seo关键词优化教程
  • 那有做网站的软文营销写作技巧
  • 九游下载安装载seo网站推广怎么做
  • 郑州做商城网站企业官网首页设计
  • 关于加强政府网站信息内容建设外贸网站优化公司
  • 产品开发详细流程图家庭优化大师
  • 做的网站.如何在局域网内访问广告推广投放平台
  • 凡科网做网站如何推广站内关键词排名软件
  • 网站建设mfdos 优帮云seo搜索引擎优化的内容
  • iis部署网站 错误400北京网优化seo优化公司
  • 用什么软件做商务网站搜索引擎seo排名优化
  • 广州深圳做网站义乌最好的电商培训学校
  • 比较出名的wordpress网站软文是什么样子的
  • 高校网站建设策划网站更换服务器对seo的影响
  • 做英文网站多少钱百度一下你就知道官网新闻
  • 做网站iiwokseo网站关键词优化多少钱
  • 学校网站建设的意义和应用如何制作一个网页链接
  • 哪哪个网站可以做兼职苏州seo门户网
  • 佛山市手机网站建设哪家好免费发布信息网平台
  • 微网站制作电话色盲测试图看图技巧
  • 西安自助建站做网站网络推广项目代理
  • 有什么知名网站是用织梦做的引流推广怎么做
  • 网站建设费可以计入办公费用么软文推荐