strtok

今天晚上,对着电脑屏幕调代码,被诡异的strtok折腾到半夜11点。虽然没把代码调通,但是把strtok这家伙算是看清了。

strtok作为C语言标准库里的一个函数,我作为计算机专业的学生,直到昨天,我俩才算是正式见面。。。虽然直到那时我才发现,我的电脑竟然连编译环境都没有!顿时悲从中来,开始追忆曾经还写程序的时光!

我曾天真的以为strtok就和漫漫人生路上会遇到的那些茫茫众函数一样,只是生命中的一个匆匆过客,若干年以后,再想起它,剩下的只会有一个淡淡的微笑随风飘散。。。直到一遍又一遍亲眼见证,和它有接触的字符串在后续的执行中被用近乎灵异方式赋值。。。灵异的就好像隔山打牛那样,让我面对这电脑凌乱不已。

离开实验室想了一路,最后才想明白,strtok其实是把字符串中给定的分割符换成‘\0’,然后再返回指向以这个‘\0’结束的字符串的指针。这就是玉姐说的使用strtok会破坏原字符串了,除了破坏原字符串,由于那些用strtok分割出的东西在内存中其实是连续存储的,于是就会出现,改一个字符串的值,然后,它后面的字符串也就有可能同时被改变。

这件事,说明了,这个世界上果然还是没有鬼的。。。