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];
没有注明,那么它就不会做任何事情并将值保留为空。请帮忙!
答案 0 :(得分:4)
数组nameArray
中只有32个字符串。但是当你这样做时:
int i = rand() % 33 + 1;
i
可以达到33.因此当i
为33时,您正在调用未定义的行为。
你可能想要:
int i = rand() % 32;
在C中,请记住数组索引从0
到N-1
不等。不是从1到N。
还要确保在复制之前为value
分配了内存。