我想修改这样的字符串: -
MainString="", ToUpdate="ABC" -> return# "ABC=1"
MainString="ABC=1", ToUpdate="ABC" -> return# "ABC=2"
MainString="ABC=2", ToUpdate="ABC" -> return# "ABC=3"
MainString="ABC=3", ToUpdate="XYZ" -> return# "ABC=3:XYZ=1"
MainString="ABC=3:XYZ=1", ToUpdate="XYZ" -> return# "ABC=3:XYZ=2"
MainString="ABC=3:XYZ=2", ToUpdate="XYZ" -> return# "ABC=3:XYZ=3"
Run Code Online (Sandbox Code Playgroud)
我有以下功能:
void UpdateString(char *MainString, char ToUpdate[20])
{
char *pData[50][2];
char *saveptr1=NULL;
int i=0,j=0,nIsPresentFlag=0;
unsigned int CdrCnt=1;
char workbuf1[200];
char workbuf[200];
memset(workbuf,0,200);
memset(workbuf1,0,200);
if(strlen(MainString)>0)
{
strcat(MainString,":");
}
strcpy(workbuf1,MainString);
pData[i][0]=strtok_r(workbuf1,"=",&saveptr1);
pData[i][1]=strtok_r(NULL,":",&saveptr1);
if(pData[i][0]) {i++;pData[i][0]=NULL; pData[i][1]=NULL;}
while((pData[i][0]=strtok_r(NULL,"=",&saveptr1)))
{
pData[i][1]=strtok_r(NULL,":",&saveptr1);
i++;
}
for(j=0;j<i;j++)
if(strncmp(ToUpdate,pData[j][0],strlen(pData[j][0]))==0)
{
CdrCnt=atoi(pData[j][1]);
CdrCnt+=1;
sprintf(pData[j][1],"%d",CdrCnt);
nIsPresentFlag=1;
break;
}
if(nIsPresentFlag==1)
for(j=0;j<i;j++) …Run Code Online (Sandbox Code Playgroud)