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.


Anmelden zum Antworten