Anfänger braucht Hilfe bei String-manipulation in C++
-
Du kannst das Ergebnis ja mal hier posten. Die Funktionen in cstring würde ich nicht mehr benutzen, wenn nicht unbedingt notwendig. Bei strncpy musst Du nach dem Abschneiden auf jeden Fall '\0' am Ende anfügen, damit der String terminiert.
http://www.henkessoft.de/C++/C/arrays_pointer.htmH A L L O \0
-
Habe etwas geschrieben um zu sehen was die String-Funktionen bewirken.
(Eben wegen der String terminierung)//TestString #include <iostream> #include <cstring> using namespace std; int main(void) { char eingabe1[12]; char eingabe2[12]; char ausgabe3[14]; int anzahl4; cout << "Eingabe 1 : "; cin.getline(eingabe1,12); cout << "Eingabe 2 : "; cin.getline(eingabe2,12); strncpy(ausgabe3,eingabe1,sizeof(ausgabe3)-1); cout << "strlen(eingabe1) : " << strlen(eingabe1) << "\n"; strncat(ausgabe3,eingabe2,sizeof(ausgabe3)-1); anzahl4=strlen(ausgabe3); cout << "Ausgabe 3 : " << ausgabe3 << "\n"; cout << "strlen(ausgabe3) : " << anzahl4 << "\n"; system("Pause"); }Da funktioniert alles...

Ich muss wohl wirklich auf andere Bibliotheken zurückgreifen...
-
Hallo,
ich habe das selbe problem...
Zwar jetzt nicht was dein Programm angeht, aber ich brauche such die Mid(), Left() und Right()-Funktion in C++!
Gibt es da vieleicht schon was vorgefertigtes??
MfG Johan
-
Hi ich bins nochmal
,
habe mich ein wenig mit deinem Code auseinander gesetzt...
Ich glaube auch das es an der Stringterminierung ("\0") hängt...
Aber mir ist auch was an deiner Right()-Funktion aufgefallen:
Die +1 hat irgenwie keinen Sinn ergeben...
Versuchs mal damit:strncat(yn,(y+sizeof(y)-i),sizeof(y));oder:
strncat(yn,(y[(sizeof(y)-i)]),(strlen(y)+1-i);sorry...
Blicke momentan selber nicht mehr durch
-
Hallo,
habe wie von Simon und Henkes vorgeschlagen nun versucht die std::String zu benutzen.
Wobei isch sagen muss das Simon sich für mein Gefühl ein wenig zu kurz gefasst hat...
Ergebnis wie folgt:// Funktionen: void textverdreher(string x,string y) { int i=0,j=0; string xn,yn,z; j = y.length(); if(j<2){ z = x + y; cout << z << "\n"; } else { for(i=1;i<j;i++){ // xn = x+Mid(y,i,1) xn = x + y.substr(i,1); // yn = Left(y,i-1) + Right(y,j-1) yn = (y.substr(0,i-1)+ y.substr((y.length()-j+1),j)); textverdreher(xn,yn); } } }Diesmal funktioniert das ding schon ein wenig besser

Ich sehe wie er die Permutation ausführt, jedoch hat er irgendwann einen Knax ab und schreib nur noch den letzten Buchstaben in einer Endlosschlefe...
Und Müllt mir damit meinen Arbeitsspeicher voll!!!!!!
Man kann im Task manager richtig mitverfolgen wie die Speicherbelastung in 5MB/s steigt!!!!
NAch beendigung des Programms bleibt dieser Müll natürlich erhalten...
Ich glaube das nennt man Memory Leak....
Hilfe!!
-
Du hast wahrscheinlich eine Endlosrekursion, das hat nicht direkt mit Memory Leaks zu tun. Allerdings sollte dir nach einiger Zeit das Programm abbrechen aufgrund eines Stack-Overflows.
Geh doch mal mit dem Debugger durch und schaue, wo sich die Funktionen nicht so verhalten, wie du willst.
-
Wie mache ich das mit dem Debuggen unter Dev-C++????

-
Jin86 schrieb:
Wie mache ich das mit dem Debuggen unter Dev-C++????

Kleiner Tipp: Am besten gar nicht. Hol dir einen aktuellen Compiler + IDE und dann geht das ganz einfach. (wie kommt natürlich drauf an, welchen Compiler du wählst..)
MSVC++ 08 Express, oder GCC + Code::Blocks ist empfehlenswert..
-
Dev-C++ ist doch eine aktuelle IDE die g++ als compiler benutzt...
Oder irre ich mich da etwa???
-
Jin86 schrieb:
Oder irre ich mich da etwa???

Ja. Dev-C++ wird schon seit Jahren nicht mehr weiterentwickelt. Code::Blocks ist quasi der Nachfolger.
-
Würde Eclipse auch gehen???
-
Was kann ich mir unter Debuggen vorstellen??
Läuft das den Code Zeile für Zeile ab wie ein Interpreter?
-
Jin86 schrieb:
Was kann ich mir unter Debuggen vorstellen??
Läuft das den Code Zeile für Zeile ab wie ein Interpreter?Ja, wenn du es so willst. Bei MSVC++ kannst du Haltepunkte setzen, bei denen der Code anhält, einzelne Anweisungen vorrücken, verschiedene Stackrähmen untersuchen und deren Variablenwerte prüfen, und so weiter.
Benutz doch Google oder Wikipedia, da findest du massenweise Informationen über Debugger.
-
Jin86 schrieb:
Würde Eclipse auch gehen???
Eclipse geht auch, würde ich aber eher nicht empfehlen, halt rein weil es nicht dafür gebaut ist. Es geht bestimmt,aber da hat z.B VC Meilen vorsprung. Vor allem Debugger weiss ich nicht, wie gut der ist. Den von MS kann ich nur empfehlen. Bedingte Haltepunkte sind auch etwas sehr schönes.

-
Alles klar...
Habe mir sowas schon gedacht...
Wusste aber nicht dass das auserhalb von Interpreter-Sprachen funktioniert...
Da ich das Programmieren aber momentan rein Hobby-mässig mache, wollte ich eigentlich keine Kohle für so sachen wie MSVC++ ausgeben...
Und die Express Edition soll glaube ich auch einen Harken haben...
ich werde jetzt wohl noch ein wenig an meiner Permutation arbeiten und gucken wo ich den Fehler habe.
Falls einer noch irgendwelche Tips hat, kann er sich gerne melden
Ansonsten bedanke ich mich schon mal im Vorraus für eure Hilfe!!!!
-
Jin86 schrieb:
eigentlich keine Kohle für so sachen wie MSVC++ ausgeben...

Und die Express Edition soll glaube ich auch einen Harken haben...Du musst weder Geld ausgeben noch hat die Express-Version einen Haken. Wo hast du das gehört?
Und selbst wenn einige Dinge nicht optimal sind, weit besser als Dev-C++ ist MSVC++ allemal...
-
Überzeugter verfechter

Habe mal gehört das man damit keine auführbaren .exe erstellen kann...
kann aber auch gut sein das ich da was mit VBA .NET vertausche...
Was meinst du mit:
"Und selbst wenn einige Dinge nicht optimal sind, ..."
Ich meine wenn ihr mir VC++ Express empfehlen könnt, werde ich es mir anschaffen,
aber ich wüsste halt schon gerne was da für Einschränkungen sind...
-
Solange du das als Hobby machst, hast du keine Einschränkungen mit der Express Version. Weil dort nämlich lediglich Team Sachen fehlen. (OK, ein paar Editoren fehlen auch, MFC auch, aber das ist nicht die Welt..).
-
Jin86 schrieb:
Überzeugter verfechter

Eher Beseitiger von irgendwelchen Gerüchten...
Jin86 schrieb:
Habe mal gehört das man damit keine auführbaren .exe erstellen kann...
Sicher. Was soll eine IDE bringen, mit der man keine Programme schreiben soll?

Jin86 schrieb:
Was meinst du mit:
"Und selbst wenn einige Dinge nicht optimal sind, ..."
Ich meine wenn ihr mir VC++ Express empfehlen könnt, werde ich es mir anschaffen,
aber ich wüsste halt schon gerne was da für Einschränkungen sind...Für einen Hobbyprogrammierer reicht es auf jeden Fall. Sogar professionell kommt man mit der Express-Version relativ weit.
-
Nexus schrieb:
Jin86 schrieb:
Habe mal gehört das man damit keine auführbaren .exe erstellen kann...
Sicher. Was soll eine IDE bringen, mit der man keine Programme schreiben soll?

Das Ding bedienen, dass die die Programme schlussendlich macht.
