9、strchr函式&strtok函式&strdup使用
阿新 • • 發佈:2019-01-05
題意: 將字串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; }