C++ 随机字符串 return 意外结果
C++ Random String return unexpected results
我正在尝试使用函数生成 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 *
我是不是在 return 中做错了什么?
您将 char s[]
声明为局部变量。局部变量在函数 returns 时被销毁,因此返回指向该变量的指针 returns 指向垃圾数据的指针。
通过动态分配 s
来解决这个问题:
char* s = new char[len];
或者您可以传递一个 char*
作为参数并将您的角色写入该数组。
记得在返回前添加终止空字符。
我正在尝试使用函数生成 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 *
我是不是在 return 中做错了什么?
您将 char s[]
声明为局部变量。局部变量在函数 returns 时被销毁,因此返回指向该变量的指针 returns 指向垃圾数据的指针。
通过动态分配 s
来解决这个问题:
char* s = new char[len];
或者您可以传递一个 char*
作为参数并将您的角色写入该数组。
记得在返回前添加终止空字符。