国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼结县| 黔南| 兴仁县| 浠水县| 九龙城区| 绍兴县| 禹州市| 花莲市| 乐山市| 邢台县| 广平县| 石城县| 渑池县| 青田县| 临城县| 恩平市| 滨海县| 宝丰县| 宝应县| 绍兴县| 兴文县| 长兴县| 霞浦县| 九龙城区| 明溪县| 浦县| 宕昌县| 循化| 郓城县| 肥乡县| 莱西市| 南投县| 临泽县| 彭山县| 奉贤区| 屏山县| 修文县| 灵台县| 昭平县| 蒲城县| 个旧市|