我正在尝试创建一个程序,该程序将根据a-z生成一系列随机字母。由于某种原因,尽管它不起作用,但它也打印其他符号。我知道我如何使用看跌期权,因为不仅有一个序列,而且有“大小”,但我这样做只是为了检查信函生成器是否真正起作用,所以我现在要重点介绍一下。但是,欢迎对代码提出任何建议:)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char *randomString(int minSize, int maxSize);
void printStrings(char **strArray, int strArraySize);
int main()
{
int size, i;
char **ptr;
printf("Type in the number of characters you would like to be used: ");
scanf("%d", &size);
ptr = malloc(size*sizeof(ptr));
if (ptr==NULL) {
printf("Cannot allocate memory. The program will now terminate.");
return -1;
}
for (i=0; i<size; i++)
ptr[i] = randomString(5, 20);
ptr[i] = '\0';
puts(*ptr);
return 0;
}
char *randomString(int minSize, int maxSize)
{
time_t t;
srand((unsigned) time(&t));
char *rndSize, *p;
int i;
rndSize = (char *)malloc(21);
p = rndSize;
for (i = minSize + rand() % 16; i<=maxSize && i>=minSize; i++)
*p++ = 97 + rand() % 26;
return rndSize;
}
答案 0 :(得分:0)
这是一个可行的示例。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char *randomString(int minSize, int maxSize);
void printStrings(char **strArray, int strArraySize);
int main()
{
time_t t;
srand((unsigned) time(&t));
int size, i;
char **ptr;
printf("Type in the number of characters you would like to be used: ");
scanf("%d", &size);
ptr = malloc(size*sizeof(*ptr));
if (ptr==NULL) {
printf("Cannot allocate memory. The program will now terminate.");
return -1;
}
for (i=0; i<size; i++)
{
ptr[i] = randomString(5, 20);
puts(ptr[i]);
}
return 0;
}
char *randomString(int minSize, int maxSize)
{
char *rndSize, *p;
int i;
rndSize = (char *)malloc(maxSize+1);
p = rndSize;
for (i = minSize + rand() % 16; i<=maxSize; i++)
*p++ = 97 + rand() % 26;
*p = '\0';
return rndSize;
}
在每个序列后添加NUL终止字符。它还会依次打印每个序列。随机数生成器初始化已放置在主体中,以避免每次都获得相同的序列。 t
尚未初始化对我来说仍然很奇怪。仍然有很多修复/改进。
答案 1 :(得分:-1)
尝试
char *randomString(int minSize, int maxSize)
(...)
rndSize = (char *)malloc(21);
memset (rndSize , 0, 21*sizeof(char));
(...)
致谢。
路易斯