gpt4 book ai didi

c - 在 C 中查找数组的索引

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:52 24 4
gpt4 key购买 nike

我想写一个代码,让我找到一个字母第一次出现的位置,这就是我到目前为止的想法。如您所见,函数返回的实际上是一个值而不是索引。有没有办法不用像代码2那样简单地给出索引的初始值就可以找到它?

char *recFirstPosition(char * source, int letter)
{

if(*source == letter)
return *source;

if (*source =='\0')
return 0;

recFirstPosition(++source, letter);
}


char *recFirstPosition(char * source, int letter, int index)
{

if(*(source+index) == letter)
return index;

if (*(source+index) =='\0')
return 0;

recFirstPosition(source, letter, ++index);
}

最佳答案

只需从第一个返回中分离 * 并为第一个版本的递归调用添加返回。

char *recFirstPosition(char * source, int letter)
{

if(*source == letter)
return source;

if (*source =='\0')
return 0;

return recFirstPosition(++source, letter);
}

这将使代码工作。您的第一个版本导致类型错误。

下面是比上面更易读的版本:

char *recFirstPosition(char *source, char letter)
{
if (*source == '\0')
return NULL;
else if (*source == letter)
return source;
else
return recFirstPosition(++source, letter);
}

上面的代码也改变了第二个参数的类型,但主要是在几条评论的启发下编写的(特别感谢 Yuli 和 Dmitri)。

您可以按如下方式使用该功能:

int main()
{
char *s = "Hello";
char *p = recFirstPosition(s, 'l');
if (p != NULL) {
int index = p - s;
printf("%s[%d] = %c\n", s, index, *p);
}
return 0;
}

关于c - 在 C 中查找数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40940524/

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