gpt4 book ai didi

C++ 随机字符串返回意外结果

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:57 24 4
gpt4 key购买 nike

我正在尝试使用函数生成 char[] :

char* randString(){
const int len = 5;
char s[len] = {0};

static const char alphanum[] =
"0123456789"
"!@#$%^&*"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";

int stringLength = sizeof(alphanum) - 1;
for (int i = 0; i < len; ++i) {
s[i] = alphanum[rand() % stringLength];
}

return s;
}

结果是随机的,预计在 return s

+       s   0x002df990 "XnQWp...    char[5]

但是,当我查看此处的值时:

char* rand = randString();

它包含奇怪的值:

+       rand    0x002df990 "XnQWpÌÌÌÌÌÌÌÌÌÌÌ\x5"    char *

我是不是做错了什么?

最佳答案

您将 char s[] 声明为局部变量。局部变量在函数返回时被销毁,因此返回指向该变量的指针会返回指向垃圾数据的指针。

通过动态分配 s 来解决这个问题:

char* s = new char[len];

或者您可以传递一个 char* 作为参数并将您的字符写入该数组。

请记住在返回前添加终止空字符。

关于C++ 随机字符串返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391672/

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