gpt4 book ai didi

c - 设计一个字符搜索函数,同时被迫使用 strchr

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:31 26 4
gpt4 key购买 nike

背景信息

最近一位 friend 找到我,他给我布置了一道作业题,要求我开发一种搜索算法。在有人问之前,我确实想到了一个解决方案!然而,我的解决方案并不是老师要求的……

无论如何,这是一门介绍性的 C 编程类(class),要求学生编写一个名为 ch_search 的搜索函数,该函数应该搜索字符数组以确定特定字符出现的次数.约束是我不明白的...

Constraints:

  1. The arguments are: array to search, character to search for, and length of the array being searched.
  2. The function must use a for-loop.
  3. The algorithm must use the strchr function.

好的,所以前两个约束我能理解……但第三个约束才是真正让我着迷的……我最初认为我们可以使用 for 循环从头到尾遍历字符串最后,简单地计算字符的每个实例。当学生最初向我描述问题时,我想出了(虽然不正确)解决方案:

建议的解决方案

int ch_search(char array_to_search[], char char_to_search_for, int array_size)
{
int count = 0;

for (int i = 0; i < array_size; i++)
{
// count each character instance
if (array_to_search[i] == char_to_search_for)
{
// keep incrementing the count
count++;
}
}

return count;
}

然后我被告知我必须专门使用字符位置函数(显然它必须是 strchr 而不是 strrchr 所以我们不能从我猜结束了吗?)...我只是不明白这不会使它变得过于复杂。我完全看不出这有什么帮助,尤其是从头开始计数......甚至 strrchr 对我来说可能更有意义。想法?

最佳答案

确实有数组的长度并且必须使用 for 循环,最自然的做法是遍历源数组。但您也可以像这样循环遍历 strchr 的结果:

int ch_search(char haystack[], char needle, int size)
{
int count = 0;

char *found;

for(; (found = strchr(haystack, needle)) != NULL; haystack = found + 1)
count++;

return count;
}

在这种情况下,您不需要数组的大小,但赋值没有说明你必须使用它。显然,此解决方案要求源代码以 '\0' 结尾。

关于c - 设计一个字符搜索函数,同时被迫使用 strchr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49440350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com