gpt4 book ai didi

c - 字符串没有填充随机字符(C)?

转载 作者:行者123 更新时间:2023-11-30 17:12:32 26 4
gpt4 key购买 nike

我正在尝试用字符串“reset\0”中的字符填充字符串,但是是随机的。由于某种原因,它只给了我一个字符:

#define STR_LEN 6
char *inputString()
{
char *string[STR_LEN + 1] = {0};
const char *digits = "reset\0";
int i;

for (i = 0; i < STR_LEN; i++)
{
string[i] = digits[ rand() % 5 + 0 ];
}

printf("STRING: %s\n", string);
}

仅将一个字符(如“t”或“e”)打印到控制台。我做错了什么?

最佳答案

如果您的意思是对字符进行随机排列,而不仅仅是使用源字符串作为字母表,请考虑 Fisher–Yates shuffle 。一个实现可能是这样的:

char s[] = "reset";
for (size_t i = strlen(s) - 1; i > 0; i--)
{
size_t j = rand() % (i + 1);
char t = s[i];
s[i] = s[j];
s[j] = t;
}
printf("%s\n", s);

这个想法是从右到左,并且在每一步中将索引 i 处的元素与 0 之间随机索引 j 处的元素交换i,包括在内。

关于c - 字符串没有填充随机字符(C)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31485814/

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