ДН
Size: a a a
ДН
FS
FS
ДН
V
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <assert.h>
#include <locale.h>
char* pass_generate(char* dest, unsigned len, ...)
{
va_list argptr;
char symbols[1 << (8 * sizeof(char))] = {0};
va_start(argptr, len);
char* part = (char*)va_arg(argptr, char*);
while (part)
{
strcat(symbols, part);
part = (char*)va_arg(argptr, char*);
}
va_end(argptr);
unsigned sl = strlen(symbols);
assert(sl);
for (int idx = 0; idx != len; idx++)
dest[idx] = symbols[rand() % sl];
dest[len] = 0;
return dest;
}
int main()
{
//system("chcp 1251 && cls"); // ANSI-CYR
setlocale(LC_ALL, "ru-RU");
char DEC_DIGITS[] = "0123456789";
char LAT_UPPER[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char LAT_LOWER[] = "abcdefghijklmnopqrstuvwxyz";
char CYR_UPPER[] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
char CYR_LOWER[] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
char OTHERS[] = "!@#$%^*()-=+/\\,.;'\x22_?<>[]{}| ";
char pass[96];
printf("# [ \" %s \" ]\n", pass_generate(pass, 8, DEC_DIGITS, NULL));
printf("# [ \" %s \" ]\n", pass_generate(pass, 11, DEC_DIGITS, LAT_LOWER, NULL));
printf("# [ \" %s \" ]\n", pass_generate(pass, 16, DEC_DIGITS, LAT_LOWER, OTHERS, NULL));
printf("# [ \" %s \" ]\n", pass_generate(pass, 20, DEC_DIGITS, LAT_LOWER, OTHERS, CYR_UPPER, NULL));
return 0;
}
ДН
ДН
ДН
V
FS
V
V
FS
V
FS
V
FS
V
FS