gpt4 book ai didi

C++ 错误 - 返回一个字符数组

转载 作者:太空狗 更新时间:2023-10-29 19:36:49 24 4
gpt4 key购买 nike

考虑以下代码:

char CeaserCrypt(char str[256],int key)
{
char encrypted[256],encryptedChar;
int currentAsci;

encrypted[0] = '\0';

for(int i = 0; i < strlen(str); i++)
{
currentAsci = (int)str[i];
encryptedChar = (char)(currentAsci+key);
encrypted[i] = encryptedChar;
}

return encrypted;
}

Visual Studio 2010 给出错误,因为该函数返回一个数组。我该怎么办?

我的 friend 告诉我将签名更改为 void CeaserCrypt(char str[256], char encrypted[256], int key)。但我认为那是不正确的。我怎样才能摆脱编译错误?

最佳答案

返回类型应该是 char * 但这只会增加另一个问题。

encryptedCeaserCrypt 的堆栈上“分配”,并且在函数返回时可能无效。由于 encrypted 与输入的长度相同,因此:

int len = strlen(str);
char *encrypted = (char *) malloc(len+1);

encrypted[len] = '\0';

for (int i = 0; i < len; i++) {
// ...
}

不要忘记稍后释放缓冲区(使用 free())。

编辑: @Yosy:不必只复制/粘贴。将其用作改进编码实践的指针。此外,为了满足批评者:使用上述示例 将已分配的指针传递给您的加密例程。

关于C++ 错误 - 返回一个字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716629/

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