Генератор паролей написанный на чистом C

Компилировался и тестировался на Open Watcom 2 (C++) Генерирует случайные символы длинной байт в первом агрументе, или 2048 байт по умолчанию.

pwgenerator.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
 
const char  blockChr[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
const int   blockLen = sizeof(blockChr)-1; // sizeof("str") == ( 3 + null)
 
int toInt(char* chars, int len, int def) {
    int i;
    for ( i=0 ; i<len ; i++) {
        if ((chars[i] < '0') || (chars[i] > '9')) return def;
    }
    return atoi(chars);
}
 
void main(int argc, char** argv) {
    int symbols = 2048;
    char* buffer;
    int i, t;
    if (argc > 1) {
        symbols = toInt(argv[1], strlen(argv[1]), symbols);
    }
    buffer = (char*) calloc(symbols+1, sizeof(char));
    srand(time(0));
    for ( i=0 ; i<symbols ; i++) {
        t = (rand() % blockLen);
        if (blockChr[t] == 0) {
            printf("%d\n", t);
        }
        buffer[i] = blockChr[t];
    }
    buffer[symbols] = 0;
    printf("%s\n", buffer);
    free(buffer);
}