gpt4 book ai didi

c - 我在 C 中的随机字符串生成器不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:18 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

void randomGenerator(char *id, int length);
int main(){
char test[8];
randomGenerator(&test[0],strlen(test));
printf("%s",test);

}
void randomGenerator(char *id, int length){
char alphabet[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *gen;
gen = &alphabet[0];
for (int i = 0;i<length-1;i++){
srand(time(0));
int random = rand() % strlen(alphabet);
for (int k = 0; i < random;i++)
gen++;
id = gen;
gen = &alphabet[0];
id++;
}
id++;
id = '\0';
}

我的随机字符串生成器尝试失败了,但我完全不知道为什么,有人可以帮助我吗?当我编译它时,我得到的输出是什么都没有,屏幕上没有字符串或没有字符。

最佳答案

两个主要问题:

  • 在初始化数组内容之前使用 strlen(test),这意味着内容是不确定的,可能根本不包含空终止符。使用 sizeof test 获取数组的大小(以字节为单位)。

  • randomGenerator 函数中,您实际上并没有写入数组的元素,而是重新分配指针。像 id = gen 这样的赋值会重新分配指针,它不会写入指针指向的位置。为此,您需要取消引用指针,如 *id = *gen 中所示。

还有一个小问题:您在循环中调用了 srand。这将重置种子每次迭代,如果使用相同的数字作为种子(很可能在这里),那么rand函数返回相同的值.您应该只为随机数生成器播种一次

关于c - 我在 C 中的随机字符串生成器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58156068/

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