在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 中...