Code:
#include <fstream>
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
#pragma hdrstop             //blödsinn wird eingebunden


int combos=0;            
int words;
int anzahl;
int anzahl2;
int absatz=0;
char *zeichen;
#pragma argsused  //variablen werden deklariert


int main(int argc, char* argv[])
{
zeichen = new char[500];               //string "zeichen" wird eingerichtet
cout << "Welche Zeichen sollen benutzt werden(max.500 verschiedene)?" << endl;     
        gets(zeichen);  // die zeichen, die in die wordlist sollen, werden abgefragt
        cout << "Bitte gebe die exakte Anzahl der Zeichen an. DIes ist enorm wichtig, da die Liste sonst nicht die " << endl << "gewuenschten Anforderungen erfuellt." << endl;
        cin >> anzahl;  //anzahl der zeichen wird manuell abgefragt,habe dazu keine bessere möglichkeit gefunden
        cout << "Wie viele Kombinationen sollen enthalten sein?" << endl;
        cin >> combos;    // die anzahl der wörter, die rein sollen, werden abgefragt
        cout << "Aus wievielen Buchstaben soll jede Kombination bestehen?" << endl;
        cin >> words;  //die anzahl der buchstaben wird abgefragt
        words=words-1; //von den buchstaben wird 1 abgezogen, da 0 gezählt wird
        cout << "Zurücklehnen, Enter drücken, und Entspannen" << endl;

        getch();
        ofstream file("C://final1.txt", ios::out|ios::app); //file final1.txt auf C:/ wird erstellt bzw. zum schreiben geöffnet
        if (file.is_open())  //wenn das file erfolgreich geöffnet wurde...
        {
        do        //starte eine schleife, die dann beendet ist, wenn int combos auf 0 steht
        {
        anzahl2=random(anzahl);  //nimmt eine zufällige zahl, die nicht größer als die angegebene Anzahl der zeichen im string zeichen sein darf 
        cout << zeichen[anzahl2]; //ein zeichen aus dem string "zeichen wird genommen, das sich an der stelle der zufälligen zahl befindet
        file << zeichen[anzahl2]; //das selbe wird geschrieben

        if (absatz==words) //es wird abgefragt, ob die zahl der zeichen der zahl entspricht, nach er ein zeilenumbruch gebildet werden soll.
        {
        cout << endl; //sollte dies der fall sein, wird ein absatz sowohl in der commandozeile als auch
        file << '\n';  //in dem txt file gebildet
        combos=combos-1; //es wird eine einheit abgezogen, damit die gewünschte anzahl erreicht wird
        absatz=0; //stelle absatz zurück auf 0
        }
        else
        {
        absatz=absatz+1;  //sollte die gewünschte anzahl an zeichen sein, wird das zeicehn einfahc eingefügt, und int absatz um 1 erhöht.
        }
        }
        while(combos != 0);
        file.close(); //file wird geschloßen
        }
        cout << "Thx, and Goodbye.";
        getch();
        delete zeichen;
        return 0;
}
gebastelt mit dem borland c++ builder 6 enterprise.
ich hoffe, der code geht in den comments nicht unter,
ist das erste mal, das ich sowas schreibe XD