国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

Linux C字符串替換函數實例詳解

2024-09-01 13:50:20
字體:
來源:轉載
供稿:網友

Linux C字符串替換函數實例詳解

               最近學習linux 的基礎編程知識,字符串替換函數,在網上找下資料,覺得這篇文章寫的不錯,記錄下來,和大家分享一下:

實例代碼:

#include <stdio.h>#include <string.h>#include <stdlib.h> /**** @author: cnscn@163.com* @reference: lovesnow1314@http://community.csdn.net/Expert/TopicView3.asp?id=5198221 ** 用新子串newstr替換源字符串src中的前len個字符內所包含的oldstr子串** @param char* dest 目標串,也就是替換后的新串* @param const char* src 源字符串,被替換的字符串* @param const char* oldstr 舊的子串,將被替換的子串* @param const char* newstr 新的子串* @param int len 將要被替換的前len個字符** @return char* dest 返回新串的地址**/char *strreplace(char *dest, char *src, const char *oldstr, const char *newstr, size_t len){//如果串相等,則直接返回if(strcmp(oldstr, newstr)==0)return src;//子串位置指針char *needle;//臨時內存區char *tmp;//把源串地址賦給指針dest,即讓dest和src都指向src的內存區域dest = src;//如果找到子串, 并且子串位置在前len個子串范圍內, 則進行替換, 否則直接返回while((needle = strstr(dest, oldstr)) && (needle -dest <= len)){//分配新的空間: +1 是為了添加串尾的'/0'結束符tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);//把src內的前needle-dest個內存空間的數據,拷貝到arrstrncpy(tmp, dest, needle-dest);//標識串結束tmp[needle-dest]='/0';//連接arr和newstr, 即把newstr附在arr尾部, 從而組成新串(或說字符數組)arrstrcat(tmp, newstr);//把src中 從oldstr子串位置后的部分和arr連接在一起,組成新串arrstrcat(tmp, needle+strlen(oldstr));//把用malloc分配的內存,復制給指針retvdest = strdup(tmp);//釋放malloc分配的內存空間free(tmp);}return dest;}int main(){char *str="wo i love iyou";char *old="i";char *new="ILOVEYOUYA";char *dest;//分配內存空間: 大小 == src的長度 + newstr和oldstr長度差(可能是正負或0)+1printf("%s/n",strreplace(dest, str, old, new,1));printf("%s/n",strreplace(dest, str, old, new,5));printf("%s/n",strreplace(dest, str, old, new,40));return 0;}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额敏县| 祥云县| 牟定县| 伊宁县| 沈丘县| 天等县| 南澳县| 元谋县| 宁安市| 逊克县| 麻城市| 丰县| 平塘县| 临洮县| 皮山县| 万州区| 嵩明县| 屏边| 惠东县| 广昌县| 三河市| 吉隆县| 绩溪县| 施秉县| 泰兴市| 九龙坡区| 襄垣县| 连城县| 南雄市| 焦作市| 吴旗县| 历史| 通渭县| 晋宁县| 建湖县| 阿拉善左旗| 外汇| 双柏县| 大关县| 浮山县| 沂南县|