最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)字符串替換的示例代碼

 更新時間:2022年01月09日 09:42:23   作者:bufanq  
本文主要介紹了C語言實(shí)現(xiàn)字符串替換的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

 替換,意思就是用另一個字符串str3來替換str1中所有的str2。替換過程和查找的過程可以合并在一起,在上面循環(huán)查找的過程中,每找到一個str2,就把它替換為str3,替換后移動指針p。替換的情況分好幾種:一種是str2和str3的長度相同,一種是str3比str2長,一種是str3比str2短。第一種情況比較簡單,直接使用strncpy函數(shù)就可以,后面兩種情況,都需要把str1中的元素進(jìn)行移動。比如,在上面的例子中,str2=“the”,假設(shè)str3 =“this”,str3比str2長,為了有足夠的空間,每找到一個the,從the后面的字符開始到結(jié)尾的‘\0’都要往后移動1個字節(jié),也就是給this騰出4個字節(jié)的地方來(the的3個字節(jié)加移出來的1個字節(jié))。假設(shè)str3 =“ok”,str3比str2短,為了填補(bǔ)空缺,每找到一個the,從the后面的字符開始到結(jié)尾的‘\0’都要往前移動1個字節(jié),也就是給ok留出兩個字節(jié)的地方就夠了。移動過后,使用strncpy函數(shù)把str3拷貝到str2所在的地方。下面的程序中,str_replace就是用來實(shí)現(xiàn)替換功能的。

關(guān)鍵點(diǎn):

注意字符數(shù)組與字符串的區(qū)別;在字符數(shù)組最后一個字符后面加上’\0’就構(gòu)成了一個字符串。

/*-------------------------------------------------
功能:實(shí)現(xiàn)字符串的替換
描述:第一行輸入原字符串,第二行輸入要替換字符串,
第三行輸入新的字符串
輸入示例:
There is an orange, do you want to eat it?
orange
apple
輸出示例:
There is an apple, do you want to eat it?
Author: Zhang Kaizhou
Date: 2019-8-9 11:11:32
--------------------------------------------------*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 300

void str_replace(char * str1, char * str2, char * str3);

int main(){
? ? char str1[MAXSIZE];
? ? char str2[MAXSIZE];
? ? char str3[MAXSIZE];
? ? gets(str1);
? ? gets(str2);
? ? gets(str3);
? ? str_replace(str1, str2, str3);
? ? puts(str1);

? ? return 0;
}

void str_replace(char * str1, char * str2, char * str3){
? ? int i, j, k, done, count = 0, gap = 0;
? ? char temp[MAXSIZE];
? ? for(i = 0; i < strlen(str1); i += gap){
? ? ? ? if(str1[i] == str2[0]){
? ? ? ? ? ? done = 0;
? ? ? ? ? ? for(j = i, k = 0; k < strlen(str2); j++, k++){
? ? ? ? ? ? ? ? if(str1[j] != str2[k]){
? ? ? ? ? ? ? ? ? ? done = 1;
? ? ? ? ? ? ? ? ? ? gap = k;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if(done == 0){ // 已找到待替換字符串并替換
? ? ? ? ? ? ? ? for(j = i + strlen(str2), k = 0; j < strlen(str1); j++, k++){ // 保存原字符串中剩余的字符
? ? ? ? ? ? ? ? ? ? temp[k] = str1[j];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? temp[k] = '\0'; // 將字符數(shù)組變成字符串
? ? ? ? ? ? ? ? for(j = i, k = 0; k < strlen(str3); j++, k++){ // 字符串替換
? ? ? ? ? ? ? ? ? ? str1[j] = str3[k];
? ? ? ? ? ? ? ? ? ? count++;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? for(k = 0; k < strlen(temp); j++, k++){ // 剩余字符串回接
? ? ? ? ? ? ? ? ? ? str1[j] = temp[k];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? str1[j] = '\0'; // 將字符數(shù)組變成字符串
? ? ? ? ? ? ? ? gap = strlen(str2);
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? gap = 1;
? ? ? ? }
? ? }
? ? if(count == 0){
? ? ? ? printf("Can't find the replaced string!\n");
? ? }
? ? return;
}

到此這篇關(guān)于C語言實(shí)現(xiàn)字符串替換的示例代碼的文章就介紹到這了,更多相關(guān)C語言 字符串替換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • OpenCV基于背景減除實(shí)現(xiàn)行人計數(shù)

    OpenCV基于背景減除實(shí)現(xiàn)行人計數(shù)

    本文主要介紹了如何使用OpenCV C++對視頻中的人流量進(jìn)行統(tǒng)計。文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)OpenCV有一定的幫助,需要的可以了解一下
    2022-01-01
  • C語言單鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng)

    C語言單鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言單鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++11中使用using的方法

    C++11中使用using的方法

    在 C++ 中 using 用于聲明命名空間,使用命名空間也可以防止命名沖突。這篇文章主要介紹了C++11中使用using的方法,需要的朋友可以參考下
    2021-09-09
  • C語言實(shí)現(xiàn)頁面置換算法(FIFO、LRU)

    C語言實(shí)現(xiàn)頁面置換算法(FIFO、LRU)

    這篇文章主要介紹了通過C語言實(shí)現(xiàn)的兩種頁面置換算法:先進(jìn)先出(FIFO)頁面置換算法和最近最久未使用(LRU)頁面置換算法。文中的代碼具有一定的學(xué)習(xí)或工作價值,快來跟隨小編學(xué)習(xí)一下吧
    2021-12-12
  • C++指針學(xué)習(xí)詳解

    C++指針學(xué)習(xí)詳解

    指針在 C\C++ 語言中是很重要的內(nèi)容,并且和指針有關(guān)的內(nèi)容一向令初學(xué)者頭大,這篇文章主要給大家介紹了關(guān)于C/C++中指針的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • c++中queue用法超詳細(xì)講解(入門必看!)

    c++中queue用法超詳細(xì)講解(入門必看!)

    queue是一種容器轉(zhuǎn)換器模板,調(diào)用#include< queue>即可使用隊列類,下面這篇文章主要給大家介紹了關(guān)于c++中queue用法超詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • C++ 算法之希爾排序詳解及實(shí)例

    C++ 算法之希爾排序詳解及實(shí)例

    這篇文章主要介紹了C++ 算法之希爾排序算法詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • STL 的string類怎么啦

    STL 的string類怎么啦

    在我們研究string類犯了什么毛病之前,還讓我先說一下如何了解一個C++的類。我們要了解一個C++的類,一般來說,要從三個方面入手
    2013-11-11
  • 嵌入式C語言查表法在項(xiàng)目中的應(yīng)用

    嵌入式C語言查表法在項(xiàng)目中的應(yīng)用

    今天小編就為大家分享一篇關(guān)于嵌入式C語言查表法在項(xiàng)目中的應(yīng)用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言排序算法之選擇排序(直接選擇排序,堆排序)

    C語言排序算法之選擇排序(直接選擇排序,堆排序)

    這篇文章主要介紹了C語言排序算法之選擇排序(直接選擇排序,堆排序),堆排序使用堆來選數(shù),效率高很多,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-07-07

最新評論

高邮市| 丰城市| 宜兰市| 尖扎县| 环江| 泾川县| 肥西县| 平昌县| 和平县| 奉化市| 阳城县| 微博| 新营市| 澄城县| 门源| 灵山县| 南和县| 奇台县| 环江| 米易县| 任丘市| 安新县| 蓝田县| 宝丰县| 栾城县| 历史| 田林县| 手机| 南昌市| 河北省| 安陆市| 长白| 波密县| 商丘市| 马关县| 东乡县| 礼泉县| 页游| 高碑店市| 周口市| 文水县|