| Код | char *strrepl(char *Str, size_t BufSiz, char *OldStr, char *NewStr) { int OldLen, NewLen; char *p, *q; //if(NULL == (p = strstr(Str, OldStr))) //return Str; p = strstr(Str, OldStr); q = p; //just additional checker, to avoid unfin. loop. int cycles = 0; while (p!=NULL && (cycles <150)) { OldLen = strlen(OldStr); NewLen = strlen(NewStr); if ((strlen(Str) + NewLen - OldLen + 1) > BufSiz) return NULL; memmove(q = p+NewLen, p+OldLen, strlen(p+OldLen)+1); memcpy(p, NewStr, NewLen); p = p+NewLen; p = strstr(Str, OldStr); cycles++; } return q; }
| Добавлено @ 14:24 думал функция встроенная... а вот..)) буду думать. |