mardi 27 octobre 2015

Append Random Text without Repetition for File (C)

I have 5 list of name

char *name[] = {"a","b","c","d","e"};

and I have 3 files

char path1[PATH_MAX+1]
snprintf(path1, PATH_MAX+1, "%sfile1.txt",dirname);
FILES *filename1 = fopen(path1, "w")
.
.
.
char path3[PATH_MAX+1]
snprintf(path3, PATH_MAX+1, "%sfile3.txt",dirname);
FILES *filename3 = fopen(path3, "w")

What I want is to randomly append a,b,c,d,e (one of them per file) into three of those files without repetition.

What I have right now is (example from one of them)

srand(time(NULL));
int one = rand()%5;
char path1[PATH_MAX+1];
snprintf(path1, PATH_MAX+1, "%sfile1.txt",dirname);
FILES *filename1 = fopen(path1, "w");
fputs(name[one],filename1);
fclose(filename1);

However, sometimes it is still possible where my file1.txt and file3.txt both contain b (same alphabet from name)

Questions

Did I miss something to make sure that all the random result always unique?

Is it also efficient tho to have 6 lines of code to create one file and append a random name inside it? I'm just wondering if I have to create like 20 files, I will write 120 lines that basically almost the same, just different in number (filename1 to filename3)

Thank you.




Aucun commentaire:

Enregistrer un commentaire