void getName(char* value)
{
const char *nameArray[] = { "bob", "billy", "jimbob", "boba fett", "chuck norris", "jimmy", "craig",
"howard", "leonard", "raj", "sheldon", "penny", "jenny", "sean", "amy", "bernadette",
"matthew", "olga", "ryan", "suanne", "darth vader", "luke", "spock", "kirk", "picard",
"michele", "randy", "suanne", "bruce lee", "garrett", "sophie", "gloria"};
int i = rand() % 33 + 1;
strcpy(value, nameArray[i]);
//value = nameArray[i];
}
我试图从这个数组中获取一个随机名称并将其存储在值中。我调试了它,发现在 strcpy
处,它使我的程序崩溃。如果 strcpy
被注释掉而 value = nameArray[i];
没有被注释掉,那么它不会做任何事情并将值留空。请帮忙!
最佳答案
nameArray
数组中只有 32 个字符串。但是当你这样做时:
int i = rand() % 33 + 1;
i
最高可达 33。因此,当 i
为 33 时,您将调用未定义的行为。
你可能想要:
int i = rand() % 32;
在 C 中,记住数组索引从 0
到 N-1
。不是从 1 到 N。
还要确保在复制到 value
之前已经为其分配了内存。
关于无法获取字符串数组来复制一个随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668965/