007
12.05.2004, 18:54 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
den spass hatten wir doch schon mal...
C++: |
int ersetzen(char *such, char *neu, char **inp,int *inp_l){ int offset,x=strlen(neu),y=strlen(such),z=strlen(*inp),rv=0; char *str,*tmp;
while(str=strstr(*inp,such)){ //substring such im string *inp suchen ++rv; //inkrementieren der anzahl der gefundenen ersetzungen z+=x-y; //neue zeichenanzahl von *inp errechnen
if(*inp_l<=z){ //wenn *inp nicht gross genu offset=str-*inp; //offset merken tmp=(char*)realloc(*inp,sizeof(char)*(z+1)); //feld entsprechneder grösse allokieren if(tmp){*inp=tmp;*inp_l=z+1;str=*inp+offset;} //ursprungszustand der zeiger herstellen else return -1; } memmove(str+x,str+y,sizeof(char)*strlen(str+y-1)); //werte im array nach dem zu ersetzenden verschieben memcpy(str,neu,sizeof(char)*x); //neu zeichenfolge in *inp kopieren }
return rv; //fertisch }
|
-- ...fleißig wie zwei Weißbrote |