gpt4 book ai didi

c - 如果我使用 while 循环遍历指向数组的指针的内容,我如何返回到数组中的第一个元素?

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:11 26 4
gpt4 key购买 nike

例如,我有一个从 main 调用的函数,该函数返回一个指针:

编辑: 有点不清楚,不好意思!假设我在 main() 中使用了一个 scanf,然后将其传递给函数,我想将参数复制到一个新指针中,然后返回该指针。

main(void)
{
char *word = malloc(50);

scanf("%s", word);

printf("%s", function(word));
}

char *function(char *array)
{
char *a = malloc(50);
while (*array)
{
*a = *array;
a++;
array++;
}
return a;
}

在这种情况下,如果我尝试将指针数组返回给 main,指针将指向内存位置 1 个空间超过我的值所在的位置。

我该怎么做才能再次将指针返回到第一个值?

谢谢!

最佳答案

最好的方法是根本不增加你的指针:

char *function(char *array)
{
const size_t maxLength = 49;

char * a = malloc(maxLength + 1);
if ( !a ) {
perror("couldn't allocate memory");
exit(EXIT_FAILURE);
}

size_t i;
for ( i = 0; array[i] && i < maxLength; ++i ) {
a[i] = array[i];
}
a[i] = '\0';

return a;
}

您的原始代码没有以 null 终止 a,但您将它传递给 printf(),就好像它是一个字符串一样。另外,你正在泄漏内存,因为你没有存储你返回的指针,所以你永远不能 free() 它。

关于c - 如果我使用 while 循环遍历指向数组的指针的内容,我如何返回到数组中的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700182/

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