欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux C字符串替換函數(shù)實例詳解

 更新時間:2017年01月28日 09:48:05   投稿:lqh  
這篇文章主要介紹了Linux C字符串替換函數(shù)實例詳解的相關(guān)資料,需要的朋友可以參考下

Linux C字符串替換函數(shù)實例詳解

               最近學(xué)習(xí)linux 的基礎(chǔ)編程知識,字符串替換函數(shù),在網(wǎng)上找下資料,覺得這篇文章寫的不錯,記錄下來,和大家分享一下:

實例代碼:

#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中的前l(fā)en個字符內(nèi)所包含的oldstr子串
*
* @param char* dest 目標串,也就是替換后的新串
* @param const char* src 源字符串,被替換的字符串
* @param const char* oldstr 舊的子串,將被替換的子串
* @param const char* newstr 新的子串
* @param int len 將要被替換的前l(fā)en個字符
*
* @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;

//臨時內(nèi)存區(qū)
char *tmp;

//把源串地址賦給指針dest,即讓dest和src都指向src的內(nèi)存區(qū)域
dest = src;

//如果找到子串, 并且子串位置在前l(fā)en個子串范圍內(nèi), 則進行替換, 否則直接返回
while((needle = strstr(dest, oldstr)) && (needle -dest <= len))
{
//分配新的空間: +1 是為了添加串尾的'\0'結(jié)束符
tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);

//把src內(nèi)的前needle-dest個內(nèi)存空間的數(shù)據(jù),拷貝到arr
strncpy(tmp, dest, needle-dest);

//標識串結(jié)束
tmp[needle-dest]='\0';

//連接arr和newstr, 即把newstr附在arr尾部, 從而組成新串(或說字符數(shù)組)arr
strcat(tmp, newstr);

//把src中 從oldstr子串位置后的部分和arr連接在一起,組成新串a(chǎn)rr
strcat(tmp, needle+strlen(oldstr));

//把用malloc分配的內(nèi)存,復(fù)制給指針retv
dest = strdup(tmp);

//釋放malloc分配的內(nèi)存空間
free(tmp);
}

return dest;
}

int main()
{
char *str="wo i love iyou";
char *old="i";
char *new="ILOVEYOUYA";

char *dest;
//分配內(nèi)存空間: 大小 == src的長度 + newstr和oldstr長度差(可能是正負或0)+1
printf("%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;
}

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

相關(guān)文章

  • linux負載均衡總結(jié)性說明 四層負載和七層負載有什么區(qū)別

    linux負載均衡總結(jié)性說明 四層負載和七層負載有什么區(qū)別

    這篇文章主要為大家詳細介紹了linux負載均衡的相關(guān)資料,什么是負載均衡?四層負載和七層負載有什么區(qū)別?具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 淺析Docker私有鏡像庫與阿里云對象存儲 OSS

    淺析Docker私有鏡像庫與阿里云對象存儲 OSS

    在本篇文章中我們給大家分享了關(guān)于Docker私有鏡像庫與阿里云對象存儲 OSS的相關(guān)知識點內(nèi)容,有需要的朋友們參考下。
    2018-09-09
  • Ubuntu 20.04最佳配置指南(新手必備)

    Ubuntu 20.04最佳配置指南(新手必備)

    這篇文章主要介紹了Ubuntu 20.04最佳配置指南,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Yum安裝中出現(xiàn)錯誤mirrorlist.txt的解決方法

    Yum安裝中出現(xiàn)錯誤mirrorlist.txt的解決方法

    前幾天在使用Yum install命令安裝軟件的時候一直提示一個mirrorlist.txt錯誤,通過查找相關(guān)的資料現(xiàn)在找到了解決的方法,所以這篇文章就整理出來和大家分享一下,有同樣遇到這個問題的朋友們可以參考借鑒下。
    2016-10-10
  • Linux切換用戶環(huán)境變量消失問題及解決

    Linux切換用戶環(huán)境變量消失問題及解決

    這篇文章主要介紹了Linux切換用戶環(huán)境變量消失問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Linux版本選擇攻略:一步到位

    Linux版本選擇攻略:一步到位

    Linux版本選擇困擾你嗎?不知道哪個版本最適合你的需求?別擔心,我們的《Linux版本選擇攻略:一步到位》將為你解答所有疑惑,
    2024-01-01
  • Linux下批量修改服務(wù)器用戶密碼方法步驟

    Linux下批量修改服務(wù)器用戶密碼方法步驟

    本文給大家介紹Linux下批量修改服務(wù)器用戶密碼方法步驟,批量修改服務(wù)器用戶密碼,由于機器數(shù)量比較多,因此采用批量修改密碼的方式進行處理比較快,具體操作步驟大家通過本文學(xué)習(xí)吧
    2018-03-03
  • 利用win10自帶虛擬機hyper-v安裝centos7方法詳解

    利用win10自帶虛擬機hyper-v安裝centos7方法詳解

    利用VMware安裝CentOS系統(tǒng)相信大家都比較熟悉了,今天為大家介紹一下利用Win10自帶的虛擬機hyper-v來安裝CentOS,hyper-v與VMware的區(qū)別還是挺大的
    2018-10-10
  • 關(guān)于g++和gcc的相同點和區(qū)別詳解

    關(guān)于g++和gcc的相同點和區(qū)別詳解

    下面小編就為大家?guī)硪黄P(guān)于g++和gcc的相同點和區(qū)別詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Xshell連接不上虛擬機的解決辦法匯總

    Xshell連接不上虛擬機的解決辦法匯總

    本文主要介紹了Xshell連接不上虛擬機的解決辦法匯總,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評論