#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';
}
我尝试使用随机字符串生成器失败,但是我实际上不知道为什么,有人可以帮我吗? 当我编译它时,输出结果是什么,屏幕上没有字符串或字符。
答案 0 :(得分:2)
两个主要问题:
在初始化数组的内容之前使用strlen(test)
,这意味着内容是不确定的,可能根本不包含空终止符。使用sizeof test
来获取数组的大小(以字节为单位)。
在randomGenerator
函数中,您实际上并未写入数组的元素,而是重新分配了指针。像id = gen
这样的赋值会重新分配指针,它不会写入指针所指向的位置。为此,您需要像在*id = *gen
中那样取消引用指针。
还有一个小问题:您在循环中调用srand
。这将重置种子每次迭代,如果种子具有相同的数字(很可能在此处),则rand
函数 将返回相同的值。您应该只对随机数生成器一次进行种子设置。