string array problem (< char*)



  • hallo 🙄

    zuerst zum string array problem.
    ich habe also ein string array:

    using namespace std;
    string aNamen[250];

    nun möchte ich in das array werte einer char* variable übergeben.

    char *Name = "Kaufmann Sowieso";
    aNamen[0] = Name;

    ätsch! das geht nicht, software absturzt. was mache ich falsch?



  • Poste mal ein ausführbares Minimalbeispiel, bei dem Code ist kein Fehler.



  • am besten poste ich den ganzen 😉

    //---------------------------------------------------------------------------
    bool 	add;
    int 	x;
    
    string 	aPlayer[250];
    int 	aWONid[250];
    int		aFrag[250];
    int 	aDead[250];
    //---------------------------------------------------------------------------
    void html_ScoreSave()
    {
    	//24h timer durch!
    
    	//nun werden die ganzen informationen (ausser aWONid)
        //aus den array's in eine html datei geschrieben.
        //danach werden alle array's refreshed und es fängt von vorne an.
    }
    //---------------------------------------------------------------------------
    void html_Score(int WONid, char *Player, bool Reason)
    {
        add = true;
        for(x = 0; x < 250; x++)
        {
        	if(aWONid[x] == WONid)
            {
                add = false;
            	break;
            }
        }
        if(add)
        {
        	aWONid[x] = WONid;
            aPlayer[x] = Player;
            if(!Reason)
            {
            	aFrag[x] = 1;
                aDead[x] = 0;
            }
            else
            {
            	aDead[x] = 1;
                aFrag[x] = 0;
            }
        }
        else
        {
        	aPlayer[x] = Player;
            if(!Reason)
            {
            	aFrag[x]++;
            }
            else
            {
            	aDead[x]++;
            }
        }
    }
    //---------------------------------------------------------------------------
    

    hoffe ihr könnt mir helfen und evl. weitere fehler(?) entdecken 😉



  • Du greifst auf die Arrays mit Index [250] zu (also eins zuviel), wenn die for-Schleife ganz durchläuft.



  • Rnding du hast recht. danke. ich ging aber der annahme das ich das richtig gemacht habe weil:

    in der for-schleife habe ich die bedingung "kleiner als" (<) somit ergibt das für mich 0 - 249 = 250 (von 250)



  • Am Ende der Schleife wird x trotzdem erhöht, und wenn der letzte Durchlauf mit 249 erfolgt, hat x danach den Wert 250 (natürlich nur wenn break nicht anschlägt).
    Du kannst dir übrigens den Hilfsmerker add sparen. Prüfe einfach x auf den Wert 250, dann weisst du auch ob gebreaked wurde oder nicht.


Anmelden zum Antworten