寻找真命天子……
到目前为止,你已经用过了书中很多 C 函数,事实上还有很多方法可以让它们变得更强大,只要学会正确使用这些方法,就可以用更少的代码做更多的事。
怎么做?我们来看一个例子。假设你想过滤某个字符串数组中的数据,只显示其中部分字符串:
int NUM_ADS = 7;char *ADS[] = { "William: SBM GSOH likes sports, TV, dining", "Matt: SWM NS likes art, movies, theater", "Luis: SLM ND likes books, theater, art", "Mike: DWM DS likes trucks, sports and bieber", "Peter: SAM likes chess, working out and art", "Josh: SJM likes sports, movies and theater", "Jed: DBM likes theater, books and dining"};
下面来写代码,用字符串函数过滤数组。
代码冰箱贴
请完成 find() 函数,用它过滤出列表中所有运动迷,同时他们不能是 Bieber 的粉丝。
注意:有的代码片段可能不会用到。
代码冰箱贴解答
请完成 find() 函数,用它过滤出列表中所有运动迷,同时他们不能是 Bieber 的粉丝。
试驾
假如把函数和数据都放在一个叫 find.c 的文件中,就可以像这样编译并运行程序:
和预期一样,find() 函数循环遍历了数组,然后找到了匹配的字符串。既然有了基本代码,就不难复制出搜索其他内容的函数。
没错,复制函数会产生很多重复代码。
C 程序经常会执行一些大同小异的任务,现在 find() 函数为了搜索匹配字符串,会遍历数组中所有元素,并测试每个字符串,而这些测试会写死在代码中,也就是说函数永远只能做一种测试。
当然也可以把字符串作为参数传递给函数,让函数搜索不同的子串,但这样 find() 还是无法检查 3 个字符串,比如“arts”、“theater”和“dining”。你需要的是一种截然不同的技术。
你需要更高端的东西……
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论