1
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];没有被注释掉,那么它不会做任何事情并将值留空。请帮忙!

4

1 回答 1

4

数组中只有 32 个字符串nameArray。但是当你这样做时:

int i = rand() % 33 + 1;

i可以达到 33。所以当i是 33 时,您正在调用未定义的行为

你可能想要:

int i = rand() % 32;

在 C 中,记住数组索引从0N-1。不是从 1 到 N。

还要确保value在复制到它之前已经分配了内存。

于 2013-02-03T02:50:06.800 回答