gpt4 book ai didi

在 C 中创建多个随机字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:21 25 4
gpt4 key购买 nike

我编写了一个代码来创建多个随机字符串。但是每次我打印它时,即使每次都创建不同的字符串,也只会多次打印最后一个字符串。谁能告诉我我做错了什么。

    static const char alphanum[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz";

char s[5],*b[5] ;

int num =0;
for(int j=0;j<5;j++)
{
*b=(char*)malloc(sizeof(char*)*10);
for (int i = 0; i < 4; ++i)
{
num = rand() % (sizeof(alphanum) - 1);
s[i] = alphanum[num];
}

s[4] = 0;
printf("%s\t",s);
b[j] = s;
}

for(int j=0;j<5;j++)
printf("\n%s",b[j]);
}

最佳答案

假设您已经使用例如 srand(time(NULL)); 为随机数生成器提供了种子,这样它将在程序的每次运行中生成不同的随机数序列,您的代码中还有一个缺陷:

s 是指向字符数组的指针。通过赋值b[j] = s;,你只给b[j]赋值了s的指针(内存位置),而不是s 的内容。由于 s 的内存位置没有改变,因此 b 的所有条目都包含对相同字符串 s 的相同引用,该字符串已更改多次次。要将 s 的当前内容复制到 b[j],请使用 strcpy() ,像这样。

strcpy(b[j], s);

关于在 C 中创建多个随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25622930/

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