teil vom string löschen
-
hallo freunde der C-Sprache...
ich habe ein kleines problem,
ich habe ein string (naja... es sind 3)
char szMeinString[] = "ist nur ein Test, blablabla" ;
char szGesucht[] = "nur ein Te" ;
char szMeinStringNeu[30]nuuuuuun, will ich dass der szMeinString durchgesucht wird nach dem Vorkommen der Zeichenkette die im szGesucht steht und das Teil dann ausgeschnitten im szMeinStringNeu gespeichert wird... hehe, nicht so einfach oder???
der neue String (ohne das "nur ein Te") soll dann im szMeinStringNeu stehen...also so soll dann mein szMeinStringNeu aussehen:
"ist st, blablabla"
hat einer 'ne idee?
leider funzt die suchfunktion im forum nicht so gut..
aber ich hoffe für euch ist das kein problem und WIR (also IHR und ... ich) lösen das kleine problemauf jeden fall big thx im vorraus...
-
alles marke eigenbau. fuer dich koennten die funktionen der string.h interessant sein.
C Funktionen fuer...
- substrings loeschen ("12345" -> "125")
- strings einfuegen ("12345" -> "123xx45")
- substrings ersetzen ("123123" -> "1xxx1xxx")len ist immer die verfuegbare puffergroesse.
/* * ------------------------------------------------------------------------------------ * "THE BEER-WARE LICENSE" (Revision 42): * christoph dot rackwitz at gmail dot com wrote this file. As long as you retain this * notice you can do whatever you want with this stuff. If we meet some day, and you * think this stuff is worth it, you can buy me a beer in return -- Christoph Rackwitz * ------------------------------------------------------------------------------------ */ #include <stdio.h> #include <string.h> int strdel(char *s, int len, int a, int b) { char *p, *q; if ((a < 0) || (b < 0)) return -1; if ((a > len) || (b > len)) return -1; if (a > b) return -1; p = s+a; q = s+b; while ((*p++ = *q++)); *p = 0; return (p-s); } int strins(char *s, int len, char *x, int i) { char *p, *q; int ls, lx; ls = strlen(s); lx = strlen(x); if ((i < 0) || (i+lx >= len)) return -1; if (ls+lx >= len) return -1; p = s+ls; q = s+ls+lx; while (p >= s+i) *q-- = *p--; p = s+i; while (*x) *p++ = *x++; return (ls+lx); } int strrepl(char *s, int len, char *search, char *replace) { char *p, *q; int slen, alen; slen = strlen(s); alen = strlen(search); p = s; do { q = strstr(p, search); if (!q) break; strdel(q, len-(q-s), 0, alen); strins(q, len-(q-s), replace, 0); p = q+strlen(replace); } while (p < s+slen); return 0; } int main() { char quelle[20] = "foo.bar,baz"; int qlen = sizeof quelle; printf("%s\n\n", quelle); strdel(quelle, qlen, 4, 7); printf("%s\n", quelle); printf("foo.,baz\n\n"); strins(quelle, qlen, "bla", 4); printf("%s\n", quelle); printf("foo.bla,baz\n\n"); strrepl(quelle, qlen, "a", "oe"); strrepl(quelle, qlen, "oo", "u"); strrepl(quelle, qlen, "u", "uu"); printf("%s\n", quelle); printf("fuu.bloe,boez\n\n"); return 0; }
und sorry wegen der vielen edits
1ter bis 9ter edit: bugfixes
10ter edit: strrepl() gegen rekursion geschuetzt
-
das ging ja schnell....
vielen, vielen dank...
hast mir sehr geholfen.
-
schau dir die funktionen aber auch an, du sollst ja auch was dabei lernen!
-
das ist doch zeitverschwendung
-
nicht wirklich, weil ich nicht fuer die fehlerfreiheit meines codes garantieren kann. wenn bei dir irgendwas schieflaeuft, musst du auch in den funktionen nachsehen und ggf. bugs beheben koennen.
keiner erwartet, dass du jeden fremdcode verstehst oder durchliest, aber so einfache sachen sind genau richtig zum lernen.
-
http://tggc.tg.funpic.de/index.php?cat=8&page=5
wieder mal wurde bewiesen das tggc doch richtig liegt. einfach traurig...
-
ich mach sowas auch recht selten...
-
BinEinNoob schrieb:
das ist doch zeitverschwendung
Was hasst du davon wenn du einfach nur Quellcode aus diesem Forum übernimmst und gar nicht verstehst was du dort eigentlich übernimmst? Ich bin Anfänger, versuche aber zu verstehen(dabei hat mir c.rackwitz schon stark geholfen, großes DANKE). Du soltsest ewentuell einwenig an deiner Einstellung arbeiten Herr BinEinNoob... :p
-
Entschuldigung, der letzte Beitrag von "BinEinNoob" wurde von mir gefakt.
War nur ein übler Scherz!