C實現Replace替換函式

2021-09-01 13:42:49 字數 1580 閱讀 5436

在php中有str_replace()可以將字串中的某些內容替換成另外的內容,但c並沒有提供這樣的功能。

因為c要管理記憶體,當替換成的字串長度大於要替換的字串長度時,原來存放資料的空間是否足夠以供替換後的資料存放是個問題。為此:c可以實現返回乙個動態分配記憶體的空間,存放替換後的資料。

另外,如果不想使用新空間存放,那麼必須保證存放資料的記憶體足夠大,比如如果肯定資料替換後不會超過10kb,那麼可以先分配10kb。

具體**如下:

#include #include #include /**

* 統計key在data中出現的次數

* @param data 待查詢的字串

* @param key 要查詢的字串

* @return key在data中出現的次數

*/int _count_string(char *data, char *key)

return count;

}/**

* 將data中的rep字串替換成to字串,以動態分配記憶體方式返回新字串

* 這個函式不需要保證data能保證容量。

* @param data 待替換某些字串的資料

* @param rep 待替換的字串

* @param to 替換成的字串

* @param free_data 不為0時要釋放data的記憶體

* @return 返回新分配記憶體的替換完成的字串,注意釋放。

*/char *malloc_replace(char *data, char *rep, char *to, int free_data)

memset(new_buf, 0, m + 1);

char *pos_start = data, *pos_end, *pbuf = new_buf;

int copy_len;

while (null != (pos_end = strstr(pos_start, rep)))

strcpy(pbuf, pos_start);

if (free_data)

free(data);

return new_buf;

}/**

* 將data中的rep字串替換成to字串

* 注意保證data空間足夠替換完成後的字串長度

* @param data 待替換某些字串的資料

* @param rep 待替換的字串

* @param to 替換成的字串

* @return 無

*/void normal_replace(char *data, char *rep, char *to)

}int main(int argc, char **argv)

"; char *to = "留香的美好";

strcpy(buf, "subject: , body:subject2:; end");

printf("%s\n", buf);

normal_replace(buf, rep, to);

printf("%s\n", buf);

return 0;

}

mysql 替換函式replace

mysql 替換字串的實現方法 mysql中replace函式直接替換mysql資料庫中某字段中的特定字串,不再需要自己寫函式去替換,用起來非常的方便。mysql 替換函式replace update table name set field name replace field name from...

Sqlserver替換函式Replace

sqlserver中replace函式 實現欄位中某個字串批量替換。注意 強烈建議替換前備份資料庫以免發生災難性後果。update article set content replace content www.abc.com www bbb.com 說明 將content欄位中的www.abc.c...

使用mysql的replace函式替換字串

最近在研究cms,在資料轉換的時候需要用到mysql的replace函式,這裡簡單介紹一下!比如你要將 表 tb1裡面的 f1欄位的abc替換為def update tb1 set f1 replace f1,abc def replace str,from str,to str 在字串 str 中...