Pointer und Char.
-
while(*strSource != '\0') //siehe Zeichenkette { strSource = strSource+1; if(*strSource != '\0') { laenge3 = laenge3 + 1; } }
Das kann man noch kürzer schreiben, viel wichtiger ist aber, es in eine Funktion zu stecken.
Vorschlag:int mystrlen(const char* str) { int length = 0; while(*str++ != '\0') // auch möglich und kürzer wäre: while(*str++) ++length; return length; }
Lagere Dinge, die du öfters brauchst, in Funktionen aus.
-
Ich steig da nicht so ganz durch, wozu ist stellarr[] da?
Arrays fangen bei 0 an. (Bei dir wird k mit 1 initialisiert.)Wo ist jetzt das
if ( *source == *search) //Sinngemess
bzw. was machst du wenn der strSearch nur teilweise gefunden wird?Geh das Ganz doch mal auf dem Zettel durch. Mit den Fingern auf die aktuelle Position des Vergleichs. Und schau mal wie viele Finger du brauchst.
-
So schaut es mittlerweile aus. Wenn die Zeichenkette und die zu ersetzende Zeichenkette gleich sind, funktioniert es. Sobald aber unterschiede auftreten in der länge funktioniert es überhaupt nicht mehr... leider kann ich mir das aber nicht erklären. Vielleicht findet ja jemand den/die Fehler die ich übersehe. Aufjedenfalll schonmal vielen danl für die hilfreichen Tipps. Das Programm ist aufjedenfall schon kürzer und übersichtlicher gewurden und zu teieln funktioniert es ja auch schon:)
k=0; for(i=0; i <lenSource; i++) // Funktion zum ersetzen { if(z==stellarr[k]) //stellarr[k] sind die stellen an denen die Zeichenkette ersetzt werden soll { x=0; while(x!=lenReplace) { *(strDest+i) = *(strReplace+x); x++; i++; } k++; z = k *lenSearch+z+1; } else if(z != stellarr[k]) { *(strDest+i) = *(strSource+z); z++; } }
-
kann mir keiner mehr helfen?
mit freundlichen Grüßen
-
Bei sowas wie
z = k *lenSearch+z+1;
weiss doch keiner was das bedeuten soll.
Du musst dir die Stelle (j) merken ab der du strSearch in strSource vergleichst.
Wenn du strSearch gefunden hast, kopierst du ab der Stelle (j) strReplace nach strDest.
Wenn du strSearch nicht gefunden hast, kopierst du ab der Stelle (j) (bis zum Unterschied) strSource nach strDest.Dann suchst du ab der Stelle weiter, wo der Unterschied / String gefunden eingetreten ist.
Bitte mit aussagekräftigen Variablennamen.