亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

/*-------------------------------------------------
功能:實(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語(yǔ)言實(shí)現(xiàn)字符串替換的示例代碼的文章就介紹到這了,更多相關(guān)C語(yǔ)言 字符串替換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++各種數(shù)據(jù)類型所占內(nèi)存大小詳解

    C++各種數(shù)據(jù)類型所占內(nèi)存大小詳解

    這篇文章主要介紹了C++各種數(shù)據(jù)類型所占內(nèi)存大小,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • matlab遺傳算法求解車間調(diào)度問題分析及實(shí)現(xiàn)源碼

    matlab遺傳算法求解車間調(diào)度問題分析及實(shí)現(xiàn)源碼

    這篇文章主要為大家介紹了matlab遺傳算法求解車間調(diào)度問題解析,文中附含詳細(xì)實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • C語(yǔ)言利用EasyX繪制小企鵝表情包

    C語(yǔ)言利用EasyX繪制小企鵝表情包

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言如何利用EasyX繪圖庫(kù)實(shí)現(xiàn)繪制可愛的小企鵝表情包,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12
  • C語(yǔ)言實(shí)現(xiàn)電影院選座管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)電影院選座管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電影院選座管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語(yǔ)言通過(guò)深度優(yōu)先搜索來(lái)解電梯問題和N皇后問題的示例

    C語(yǔ)言通過(guò)深度優(yōu)先搜索來(lái)解電梯問題和N皇后問題的示例

    深度優(yōu)先搜索即是對(duì)一個(gè)新發(fā)現(xiàn)的節(jié)點(diǎn)上如果還關(guān)聯(lián)未探測(cè)到的邊,就沿此邊探測(cè)下去,直到發(fā)現(xiàn)從原點(diǎn)可達(dá)的所有點(diǎn)為止,這里我們就來(lái)展示C語(yǔ)言通過(guò)深度優(yōu)先搜索來(lái)解電梯問題和N皇后問題的示例
    2016-06-06
  • 通過(guò)代碼實(shí)例解析c++ vector常用方法

    通過(guò)代碼實(shí)例解析c++ vector常用方法

    這篇文章主要介紹了通過(guò)代碼實(shí)例解析c++ vector常用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 一文帶你了解C++中deque的使用

    一文帶你了解C++中deque的使用

    C++中的deque是一種雙端隊(duì)列,可以在隊(duì)列的前端和后端進(jìn)行插入元素和刪除操作,同時(shí)可以視作一個(gè)長(zhǎng)度不定的數(shù)組,支持高效的插入和刪除操作。本篇文章將深入探討C++中的deque的使用,感興趣的可以了解一下
    2023-05-05
  • C++實(shí)現(xiàn)LeetCode(228.總結(jié)區(qū)間)

    C++實(shí)現(xiàn)LeetCode(228.總結(jié)區(qū)間)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(228.總結(jié)區(qū)間),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++為什么要用指針而不直接使用對(duì)象?

    C++為什么要用指針而不直接使用對(duì)象?

    今天小編就為大家分享一篇關(guān)于C++為什么要用指針而不直接使用對(duì)象?,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • 淺談Qt實(shí)現(xiàn)HTTP的Get/Post請(qǐng)求

    淺談Qt實(shí)現(xiàn)HTTP的Get/Post請(qǐng)求

    本文主要介紹了淺談Qt實(shí)現(xiàn)HTTP的Get/Post請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論