wie würde euer strcpy aussehen?
-
also die standart copy funktion wie du sie auch geschrieben hast hab ich ja in meinem Programm halt nur mit int und nicht size_t schreibe ich um.
jetzt soll aber in der my_strcpy direkt, sollte ein Leerzeichen eingegeben werden der restliche Term dorthin verschoben werden.
also:
2 +2(2* 2)
2+2(2* 2)
2+2(2*2) <- DAS wird dann wieder in meine Funktion Berechne geschickt (soll jedenfals)Berechne macht dann so sachen wie Klammern weg und den Term Parsen ... nur muss es halt ersteinmal korrekt reingeschickt werden weil er 2 +2(2* 2) nicht macht also 0 ausgibt.
Lediglich DAS ist noch mein Problem...
-
In einen string packen, Leerzeichen löschen und Fertig. Wo ist das Problem?
-
drakon schrieb:
In einen string packen, Leerzeichen löschen und Fertig. Wo ist das Problem?
Das ich es nicht mit Strings mache...
du meinst bestimmt so das vorgehen mit std:str ... irgendwas bla...
zum Beispiel habe ich Klammernwegmachen auch anders lösen müssen:
//Wenn Außen Klammern werden diese zur weiteren Berechnung entfernt Karsten Menger Computer Future Solution //(Klammern wenn: [0] != '(' und [letzte Position - 1] != ')' if (term[0] == '(' && term[strlen(term)-1] == ')' ) { strncpy (wterm, term+1, term[strlen(term)-2]); //oder: std::memmove(wterm, term+1, term[strlen(term)-2]); wterm[strlen(wterm)-1] = 0; return berechne (wterm); }kleiner Programmausschnitt... so mach ich das halt erstmal... ( zum üben
)
-
Virokams schrieb:
drakon schrieb:
In einen string packen, Leerzeichen löschen und Fertig. Wo ist das Problem?
kleiner Programmausschnitt... so mach ich das halt erstmal... ( zum üben
)Das Problem ist, dass wenn du es erstmal am Anfang immer so machst, du es später genauso machen wirst.
Und dieses Vorgehen birgt im Vergleich zu einer Benutzung von std::string viele, viele Gefahren..
-
Das bringt dir überhaupt nichts das so zu machen. Du machst es nur unnötig kompliziert...
Wenn du es richtig machen willst, schreib dir Funktionen, die ein beliebiges Zeichen finden können, welche, die es löschen können, oder was auch immer.Aber wenn du wirklich vorwärts kommen willst, dann benutz std::string und die Standardalgorithmen. Wenn du wissen willst, wie die das gemacht haben, dann kannst du auch noch den Source anschauen.
-
[quote="The-Kenny"]
Virokams schrieb:
Das Problem ist, dass wenn du es erstmal am Anfang immer so machst, du es später genauso machen wirst.
Und dieses Vorgehen birgt im Vergleich zu einer Benutzung von std::string viele, viele Gefahren..
stimmt... aber ist wie gesagt anweisung von oben das ich es erstmal so mache... ich denke danach werde ich es wohl nochmal mit Strings lösen.
tut mir ja auch leid

-
Habe es jetzt erstmal SO gelöst:
char * my_strcpy(char* dest, const char * source) { int j = 0; for (int i = 0; source[i] == '\0' ;i++) { if(source[i] != ' ') { dest[j++] = source[i]; } } dest[j] = '\0'; return dest; }obwohl es noch nicht wirklich geht wenn ich in meinem Programmcode anstelle strcpy my_strcpy nutze hmmmmm... sieht aber mehr als korrekt aus XD
-
Virokams schrieb:
Habe es jetzt erstmal SO gelöst:
for (int i = 0; source[i] == '\0' ;i++) { if(source[i] != ' ') { dest[j++] = source[i]; } }Abbruch Bedingungen sind in C++ Zählschleifen so, dass die Schleife abgebrochen wird, wenn die Bedingung nichtmehr erfüllt ist.
source[i] != '\0'Das sollte funktionieren.
Grüße,
Daniel
-
ach ^^ so soll es auch eigentlich sein

source[i] != '\0'meeeensch ... schriebfehler...
okey jetzt macht er keine Fehler mehr... jedoch löscht er die Leerzeichen noch nicht... liegt aber nicht an der Funktion my_strcpy sondern eher das irgendwo in meinem Programm schon geparst wird obwohl der Term noch nicht korrekt vorbereitet wurde sprich () aussen weg und halt die Leerzeichen weg... muss ich noch schauen...
-
Virokams schrieb:
obwohl es noch nicht wirklich geht wenn ich in meinem Programmcode anstelle strcpy my_strcpy nutze hmmmmm... sieht aber mehr als korrekt aus XD
Das beste wäre wohl, du würdest auf beide verzichten, zumindest in C++.
In der C++-Standardbibliothek gibt es nämlich die Klasse
std::string, die komfortable Zeichenkettenverwaltung erlaubt. Schau doch mal auf www.cplusplus.com nach.