Zufallstext erzeugen , aber wie :(
-
http://www.c-plusplus.net/forum/viewtopic-var-p-is-227978.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html
-
Du solltest aber besser String verwenden, ist sicherer... Oder gleich std::vector :p
Oder du forderst neuen Speicher an, der ist auch "zufällig" belegt...
Im Übrigen müsste das einen Bufer-Overflow geben, da du für p nie Speicher reservierst.
Du könntest höchstens so probieren:
char*p=new char[30]; for(i=0;i<30;i++) { char c=reinterpret_cast<char>(random()); p[i]=c; } //... delete p;
-
DarkShadow44 schrieb:
Oder du forderst neuen Speicher an, der ist auch "zufällig" belegt...
undefiniert =/= zufällig
-
DarkShadow44 schrieb:
Im Übrigen müsste das einen Bufer-Overflow geben, da du für p nie Speicher reservierst.
Seit wann gibt es einen Buffer-Overflow, wenn man keinen Speicher reserviert? Es gibt einfach undefiniertes Verhalten, was auch immer dies sein wird. Es ist halt undefiniert.
Im übrigen zu deinem Quellcode:
// Brauchen wir später: char const* alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789,. -"; int const alphabetLength = std::strlen(alphabet); //char*p=new char[30]; // Wieso per new Speicher holen und dann noch eine konstante kleine Menge? // Lieber so: char buffer[30]; for(i = 0; i < 30; ++i) { //char c=reinterpret_cast<char>(random()); // Dafür verwendet man static_cast und wieso die Zwischenvariable? // buffer[i] = static_cast<char>(random()); // Allerdings ergibt das immer noch eine Menge unsinniger nicht druckbarer Zeichen. // Daher vielleicht besser so: buffer[i] = alphabet[rand() % alphabetLength]; } // Nicht mehr nötig: // delete p;Grüssli
-
Ich würde wohl eine zufällige Zahl in ein char setzen und in ein stringstream packen.
-
@Volkard,
Was soll denn der Edit? Wieso löschst du meinen ganzen Beitrag?Grüssli
-
Dravere schrieb:
@Volkard,
Was soll denn der Edit? Wieso löschst du meinen ganzen Beitrag?Grüssli
Ups, das tut mir sehr leid. Hab den falschen Button erwischt. Ich wollte nur Quote drücken und nicht Edit.
Hast Du den Code noch? Dann poste ihn doch bitte nochmal.
Sorry.
-
volkard schrieb:
Dravere schrieb:
@Volkard,
Was soll denn der Edit? Wieso löschst du meinen ganzen Beitrag?Grüssli
Ups, das tut mir sehr leid. Hab den falschen Button erwischt. Ich wollte nur Quote drücken und nicht Edit.
Hast Du den Code noch? Dann poste ihn doch bitte nochmal.
Sorry.Hab ihn in der History wiedergefunden. Was mein Browser so alles speichert

volkard schrieb:
Dravere schrieb:
int const alphabetLength = std::strlen(alphabet);Da würde ich sogar sizeof verwenden.
Ehm, aber sag mal, wie soll das über
sizeofgehen? Ist ja nur ein Zeiger. Und wenn der Kompiler klug ist, kann er das prima wegoptimieren.Grüssli
-
Geht gar nicht.
Ich habechar const* alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789,. -";gesehen, aber
static char const alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789,. -";gelesen.
-
Das "new" war dafür gedacht, die Länge des Zufallsstrings variabel zu halten, also zur Laufzeit änderbar.

Zwischenvariablen verwende ich zum Debuggen gern
Und das mit dem "buffer[i]=random()" war nur als Beispiel gedacht.