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

标签 c arrays linux char

#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/

相关文章:

javascript - 使用额外的变量在过滤器 JavaScript 中进行排序

linux - oracle linux 上的依赖性检查失败

linux - 在同一个文件上重复使用 sed

c++ - 生成表单(Windows 表单)的控制台应用程序?

对象数组中的javascript排序元素

c - 函数指针中的段错误

java - 项目列表的属性只有一个字节[],

linux - dhcpv6 返回错误子网

c - 求三角形c的最长边

c++ - 使用 Visual Studio C++ 编译器编译 C 代码是否有任何(与性能相关的)缺点?