返回介绍

寻找真命天子……

发布于 2024-10-10 23:21:29 字数 2056 浏览 0 评论 0 收藏 0

到目前为止,你已经用过了书中很多 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文