strcat Problem in einer Schleife :(
-
Hallo
Ich habe ein Problem mit strcat in einer Schleife.
Hier mein Code:while(true){ Sleep(5000); char *test = "hallo"; char *temp = getenv("TEMP"); strcat(temp, test); cout << temp << endl; //Nochmal ... char *test2 = "hallo2"; char *temp2 = getenv("TEMP"); strcat(temp2, test2); cout << temp2; }Das Problem dabei ist, dass ich das zweite mal den "String" vom vorderen Ergebnis auch zurückbekomme..
Hier ein Screenshot:
http://img6.imagebanana.com/img/cg964og0/Unbenannt.pngBei der zweiten Ausgabe sollte nur "hallo2" stehen nach dem Pfad und nicht "hallohallo2".
Vielen Dank für die Antwort(en)
Grüsse,
Genius
-
Der von getenv zurückgegebene Zeiger zeigt auf Speicher, der Dir nicht gehört, da darfst Du nicht einfach so rein- und schon gar nicht darüber hinaus schreiben. Genau das machen Deine strcat-Aufrufe aber.
-
Vielen Dank für Deine Antwort

Ich habe es nun so gelöst, und es funktioniert.
char wintemp_path[MAX_PATH]; GetTempPath(1024,wintemp_path); char *test = "hallo"; char *temp = wintemp_path; strcat(temp, test); cout << temp << endl;Viele Grüsse,
Genius
-
warum der umweg über zeile 5?
-
Hallo LowFly,
Damit es ein bisschen übersichtlicher ist

Aber Du hast recht, die Variable könnte ich weglassen.Grüsse,
Genius
-
Genius schrieb:
Vielen Dank für Deine Antwort

Ich habe es nun so gelöst, und es funktioniert.
char wintemp_path[MAX_PATH]; GetTempPath(1024,wintemp_path); char *test = "hallo"; char *temp = wintemp_path; strcat(temp, test); cout << temp << endl;Viele Grüsse,
Geniusda MAX_PATH = 260 schreit dein Code gerade nach einem crash...
-
Wenn du ohnehin in C++ programmierst, dann nimm std::stringstream und du kannst dir damit deinen String problemlos zusammenbauen.
std::stringstream strm; strm << "hallo" << getenv("TEMP"); std::cout << strm.str() << std::endl;
-
char *test = "hallo"; char *temp = wintemp_path; strcat(temp, test);Das funktioniert ?! Ohne abzustürzen ? temp zeigt doch auf ein konstanten String-literal, sollte als bei strcat fetzen und dein Programm abstürzen.
Oder irre ich mich ?
-
temp zeigt doch auf ein konstanten String-literal
Bei ihm nicht

-
Rofl, da steht ja ne Variable ... hab ich glatt überlesen
