srand-Funktion liefert Zeichen anstatt Zahlen..
-
Hi leute!
Ich möchte eigentlich eine Zahl zwischen 0 und 46, also kleinste zahl immer 1 und höchste immer 45, eine Zufallszahl daraus generieren.
Doch meine Funktion liefert zwar zufällige dine, aber ZEICHEN wie ¢ & ( [ ]$ etc, anstatt normale zahlen.
Warum das denn??
srand (GetTickCount()); CString ausgabe; CString zufall; CString random; int s; random = rand()%(46)+1; srand(time(NULL)); zufall.Format("%s", random); ausgabe = "Die Zufallszahl lautet: " + zufall; m_strText.SetWindowText(ausgabe); UpdateData(TRUE);mfg Pro
-
srand liefert keinen CString.
SChau dir an was srand für eine Rückgabewert liefert. Dementsprechend musst du auch das Format anpassen.
-
Wie müsste ich denn das Format anpassen??
srand sollte laut einem Codebeispiel auf quellcodes.de CString liefern können.?????????????
mfg
Pro
-
der Fehler liegt hier:
zufall.Format("%s", random);
Du sagst Format das es die Zahl als String (%s) interpretieren soll.
-
Ups, ja das ist richtig.
Danke
Klappt nun wunderbar.
-
Oh man Leute, noch falscher.
rand() gibt einen int zurück. Du hast aber einen CString.
Wenn du diesen in "int" ändern würdest dann ginge es bei format mit "%i".
HIer ein Code wo man auch den begin und ende angeben kann.
srand(GetTickCount()); int zufall = beginn + ( rand() % (ende - beginn + 1)); CString zufallszahl; zufallszahl.Format("%i",zufall);
-
Oh man Leute, noch falscher.
Wen meinst du?
-
Das hat nichts damit zutun. Format war richtig da ein CString übergeben wird. Somit "%s".
Da aber bereits vorher ein Fehler war (rand() gibt einen int zurück und keine CString) ist somit Format auch falsch da es eigentlich ein int sein müsste und dann natürlich "%i" sein sollte.
Man muss Fehler im Source schon der Teihe nach beheben. Wenn man nur den Format auf "%i" ändert gibt es wi8eder einen Fehler da random ein CString ist.