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.