Я написал программу для генерации случайной строки, , но когда я вызываю функцию для двух и более раз, я получаю одинаковые случайные строки.Как очистить память в C?
Пожалуйста, проверьте код ниже:
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
char* randomstring(int length);
int main()
{
char* randomstring(int);
char *str, *str2;
str = randomstring(3);
str2 = randomstring(3);
printf("final random string is %s and length is %s\n", str, str2);
}
char* randomstring(int length)
{
int len, len1, i = 0, j = 0;
char *c;
char *string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
len = strlen(string);
len1 = length + 1;
time_t t;
c=(char*) calloc(len1, sizeof(char));
printf("final random string is %d \n", len);
srand((unsigned) time(&t));
for(i = 0; i < length; i++)
{
j=rand() % len;
c[i] = string[j];
}
c[len1] = '\0';
return c;
}
Выход:
final random string is 26
final random string is 26
final random string is BNQ and length is BNQ
[Пожалуйста, смотрите эту дискуссию о том, почему не бросить возвращаемое значение 'таНос () 'и семью в' C'.] (http://stackoverflow.com/q/605845/2173917). –
Переместить 'char * randomstring (int);' в начале .... –
Отныне, пожалуйста, правильно открепите свой код, иначе никто не сможет его прочитать. – birdoftheday