1641_strchr函数的功能分析以及peek功能实现分析
创始人
2024-06-01 11:51:39
0

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         继续分析shell例程代码,再次遇到了一个陌生的库函数strchr。

1. 从这里看,这个是一个库函数无疑了。

2. 这个函数,或者说这三个函数主要的功能是确认一个字符在字符串中的位置。

3. 从函数原型上,这个设计的确是让我觉得有点蒙圈。在UNIX的设计中,感觉int类型似乎到了滥用的地步。

4. strchr的作用是查找一个字符在字符串中的位置,找不到返回NULL;而strrchr则是反向查找,找不到返回NULL;strchrnul依然是正向的查找但是如果找不到不再返回NULL而是返回字符串最后的位置。

         Strchrnull是GNU的一个扩展,这也就意味着上面提到额度BSD等一系列的标准实现中可能是不包含的。

         基于此,这个函数的实现其实就很容易理解了。Peek做了什么呢?如果知道一个字符串,并且知道字符串结束的位置。Peek会跳过字符串中的空白,这是上面第一个strchr的作用,用来甄别空白字符。甄别处理的过程中,peek其实是会直接修整原始的字符串。假如,这样的操作结束后字符串不是空,并且字符串的第一个字符是toks字符串的子集,那么返回1,否则返回0。

         接下来,对peek进行一个简单的测试。

         可以用这种方式测试一组信息,并且打印展示出来所有的中间状态。

         设计了一组测试,进行了几种不同的信息peak测试。

test started:

string:    abcd123

toks:fedcba

after peek.

string:abcd123

test finished and return value:1

test started:

string:  1234

toks:fedcba

after peek.

string:1234

test finished and return value:0

test started:

string:abcd123

toks:fedcba

after peek.

string:abcd123

test finished and return value:1

test started:

string:1234

toks:fedcba

after peek.

string:1234

test finished and return value:0

test started:

string:

toks:fedcba

after peek.

string:    abcd123

test finished and return value:0

test started:

string:    abcd123

toks:43210

after peek.

string:abcd123

test finished and return value:0

test started:

string:  1234

toks:43210

after peek.

string:1234

test finished and return value:1

test started:

string:abcd123

toks:43210

after peek.

string:abcd123

test finished and return value:0

test started:

string:1234

toks:43210

after peek.

string:1234

test finished and return value:1

test started:

string:

toks:43210

after peek.

string:    abcd123

test finished and return value:0

         通过上面的测试记录看,测试还是很符合预期的。

相关内容

热门资讯

润禾材料涨2.27%,成交额1... 5月12日,润禾材料盘中上涨2.27%,截至09:35,报39.18元/股,成交1948.55万元,...
众源新材涨2.04%,成交额1... 5月12日,众源新材盘中上涨2.04%,截至09:40,报10.02元/股,成交1926.44万元,...
浔兴股份跌2.54%,成交额1... 5月12日,浔兴股份(维权)盘中下跌2.54%,截至09:41,报9.20元/股,成交1.01亿元,...
突发!金价大跌,A股港股高开!... 每经编辑|毕陆名 刚刚过去的这个周末,大事频发,随着中美贸易谈判出现积极进展、印巴...
捷强装备跌2.15%,成交额7... 5月12日,捷强装备盘中下跌2.15%,截至09:35,报29.58元/股,成交7273.96万元,...
厚普股份涨2.06%,成交额2... 5月12日,厚普股份盘中上涨2.06%,截至09:40,报9.91元/股,成交2302.99万元,换...
东芯股份涨2.01%,成交额5... 5月12日,东芯股份盘中上涨2.01%,截至09:40,报32.52元/股,成交5488.77万元,...
菲利华涨2.01%,成交额72... 5月12日,菲利华盘中上涨2.01%,截至09:42,报48.75元/股,成交7210.29万元,换...
富满微涨2.01%,成交额23... 5月12日,富满微盘中上涨2.01%,截至09:41,报30.41元/股,成交2314.82万元,换...
5月12日人民币对美元中间价报... 中新网5月12日电 据中国外汇交易中心网站消息,中国人民银行授权中国外汇交易中心公布,2025年5月...
梦洁股份跌2.07%,成交额1... 5月12日,梦洁股份(维权)盘中下跌2.07%,截至09:42,报3.79元/股,成交1906.76...
盛泰集团跌2.02%,成交额1... 5月12日,盛泰集团盘中下跌2.02%,截至09:41,报6.30元/股,成交1688.14万元,换...
普利退涨2.67%,成交额24... 5月12日,普利退(维权)盘中上涨2.67%,截至09:42,报0.77元/股,成交246.72万元...
西部超导涨2.00%,成交额8... 5月12日,西部超导盘中上涨2.00%,截至09:41,报50.90元/股,成交8972.82万元,...
锂电池ETF(561160)开... 5月12日,锂电池ETF(561160)开盘涨1.27%,报0.479元。锂电池ETF(561160...
中药50ETF(562390)... 5月12日,中药50ETF(562390)开盘涨0.32%,报0.952元。中药50ETF(5623...
新能源车龙头ETF(15963... 5月12日,新能源车龙头ETF(159637)开盘涨0.66%,报0.611元。新能源车龙头ETF(...
机床ETF(159663)开盘... 5月12日,机床ETF(159663)开盘涨0.90%,报1.122元。机床ETF(159663)重...
碳中和龙头ETF(159640... 5月12日,碳中和龙头ETF(159640)开盘涨0.54%,报0.742元。碳中和龙头ETF(15...
交运ETF(159662)开盘... 5月12日,交运ETF(159662)开盘涨0.20%,报0.991元。交运ETF(159662)重...