久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

[C語(yǔ)言]字符串處理 - 用指定的字符串替換要查找的字符串

 londonKu 2012-04-29

[C語(yǔ)言]字符串處理 - 用指定的字符串替換要查找的字符串(支持中文字符)

2008-11-08: 函數(shù)StringReplace(用指定的字符串替換要查找的字符串),主要在realloc上費(fèi)了些時(shí)間,,因?yàn)閞ealloc重新分配內(nèi)存空間后,,地址也發(fā)生了變化。所以如果有指針指向它的話,,要重新進(jìn)行賦值,。

/*C代碼如下*/
#include <stdio.h>

/*用指定的字符串替換要查找的字符串*/
char* StringReplace(const char* string,const char* search,const char* replace,int number)
{
     char* result;
     /*首先分配一個(gè)char*的內(nèi)存,然后再動(dòng)態(tài)分配剩下的內(nèi)存*/
     result = (char * )malloc(sizeof(char)*1);
     memset(result,0,sizeof(char)*1);
     /*定義一個(gè)遍歷用的指針和一個(gè)尋找位置用的指針*/
     char* p = string;
     char* pos = string;
     char* t_result = result;
     while(*p != '\0' && number > 0)
     {
         /*查找該字符串*/
         pos = strstr(p,search);
         /*結(jié)果為0說(shuō)明剩下的字符串中沒(méi)有該字符了*/
         if(pos == 0)
         {
             break;
         }
         /*分配臨時(shí)字符串空間*/
         result = (char * )realloc(result,sizeof(char)*(strlen(result) + (pos - p) + strlen(replace) + 1));
         /*重新指定臨時(shí)指針的位置,,因?yàn)閞ealloc重新分配內(nèi)存后,,其內(nèi)存位置可能發(fā)生變化*/
         t_result = result + strlen(result);
         while(p<pos)
         {
             *t_result++ = *p++;
         }       
         /*將字符串結(jié)尾置零*/
         *t_result = '\0';
         /*設(shè)置臨時(shí)指針,以便賦值時(shí)使用*/
         char* t_replace = replace;
         while(*t_replace != '\0')
             *t_result++ = *t_replace++;
         /*將字符串結(jié)尾置零*/
         *t_result = '\0';
         /*設(shè)置下一次遍歷時(shí)的指針(重要),。當(dāng)將臨時(shí)指針指向search字符串長(zhǎng)度后的位置,,這樣設(shè)置不會(huì)多賦值不必要的字符串*/
         p +=strlen(search);
         number-- ;
     }

     /*將查找剩余的字符進(jìn)行處理*/
     /*重新分配內(nèi)存空間,并重新設(shè)置臨時(shí)指針位置*/
     result = (char * )realloc(result,sizeof(char)*(strlen(result) + strlen(p) + 1));
     t_result = result + strlen(result);
     /*將剩余字符串賦值*/
     while(*p != '\0')
     {
         *t_result++ = *p++;
     }
     /*將字符串結(jié)尾置零*/
     *t_result = '\0';
     return result;
}
int main()
{
     /*進(jìn)行測(cè)試*/
     char* t = "a/ccc哈a//哈cccbccc";
     char* end = StringReplace(t,"哈","d",3);
     printf("Replace begin:%s\n",t);
     printf("Replace end :%s\n",end);
     end = StringReplace(t,"哈","d",1);
     printf("Replace begin:%s\n",t);
     printf("Replace end :%s\n",end);
     return 0;
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多