版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sxj731533730/article/details/85255952
题意: 将字符串abcddd#123#gaghah#345#fdsafa#345#中把#之间的数字串替换成对应的字母串
123===》defd
345===》fdse
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<string.h>
using namespace std;
int main()
{
char *str="abcddd#123#gaghah#345#fdsafa#345#";
char *token,*pch,*strps=NULL;
int *arry;
int i=0,j=0;
arry=(int *)malloc(sizeof(int)*strlen(str));
memset(arry,0,strlen(str));
pch=strchr(str,'#'); //查找某个字符的位置 strstr 查找某个字符串的位置
while(pch!=NULL) {
if(i%2==0) {
arry[j]=pch-str;
j++;
}
i++;
pch=strchr(pch+1,'#');
}
i=0;
char *s;
s=(char*)malloc(sizeof(char)*strlen(str));
char *st=strdup(str);
token=strtok(st,"#"); //字符串分割 但是 一般使用strtok_r 保证线程安全
while(token!=NULL) {
if(token-st-1==arry[i]){
strcat(s,token);//此处需要replace 函数 此代码暂不做处理 只做讲解
i=i+2;
} else {
strcat(s,token);
}
token=strtok(NULL,"#");
}
cout<<s<<endl;
return 0;
}