gpt4 book ai didi

c - 从 C 中的函数返回 char 时出错

转载 作者:行者123 更新时间:2023-11-30 18:23:59 24 4
gpt4 key购买 nike

#define SIZE 1024
char encryptEVEN(char *c)
{
int i;
i = 0;
char enEVEN[SIZE], temp[SIZE];
while (/*c[i] != NULL &&*/c[i] != '\0')
{
if (i % 2 == 0 || i - 3 == 0)
{
enEVEN[i] = c[i];
i++;
}
}
strcpy(temp, enEVEN);
return enEVEN;
}

int main()
{
char charr[SIZE], enEVEN[SIZE];
strcpy(enEVEN, encryptEVEN(charr));
printf("%s", enEVEN);
}

你好,我试图在 C 中传递并返回一个字符,但我不断收到警告并且没有显示输出我认为问题出在函数的返回上..我可以获得一些帮助

最佳答案

您有两个主要问题:

首先是您使用了错误的返回类型。您尝试返回一个指针(指向 enEVEN 的第一个元素),即 char * 类型的内容。但返回类型是char,而不是指针。

更糟糕的问题是,您返回一个指向 enEVEN 第一个元素的指针,它是一个局部变量。一旦从函数返回,局部变量就会超出范围并不再存在。这意味着您想要返回的指针将无效,它将指向执行 return 语句后不存在的内容。

要解决第一个问题,请将返回类型更改为 char *。为了解决第二个问题,将数组 enEVEN 作为参数传递给函数。

<小时/>

还有第三个问题,与上述问题无关:在 main 函数中,您没有初始化 charr 数组。其内容将是不确定(并且看似随机)。

关于c - 从 C 中的函数返回 char 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47206342/

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