在c字符串中搜索并替换substring

时间:2017-01-22 12:02:17

标签: c string

我对搜索有疑问,并在另一个字符串中替换子字符串。

我有一些str字符串,其中包含名称和****而不是出生年份,以及mat矩阵数组(3d数组)。 矩阵包含有关人员的详细信息(fName,lName和出生年份)。 我需要的是运行str并取名称(可能是第一个或最后一个)并在矩阵上运行并查找该人的年份(如果有多个同名的人这样写的话)第一个)

我试过了:

void fillYears(char* mat[][M], int rowsNum, char str[MAX_INPUT]){
   char *token,*token2;
   char tmpStr[MAX_INPUT];
   int i,index = 0;
   char subStr[2] = "\n";
   strcpy(tmpStr,str);
   /* get the first token */
   token = strtok(tmpStr, subStr);
   index+=strlen(token)+1;
   /* walk through other tokens */
   while( token != NULL ) 
   {
       token2 = strtok(token, " ");
       //walk through the matrix
       for(i=0;i<rowsNum;i++){
           // check first name and last name if the same as token name
           if(strcmp(mat[i][0],token2) == 0 || strcmp(mat[i][1],token2) == 0)
           {
               str[index-5] = mat[i][2][0];
               str[index-4] = mat[i][2][1];
               str[index-3] = mat[i][2][2];
               str[index-2] = mat[i][2][3];
               break;
           }
       }

      token = strtok((str+index), subStr);
      index+=strlen(token);
   }
}

void main(){
    char * inputStr[NUM_OF_ROWS][M];
    char str[MAX_INPUT] = "aa ****\nbbb ****\ncc ****\n";
    inputStr[0][0] = "aa";
    inputStr[0][1] = "aaa";
    inputStr[0][2] = "1111";
    inputStr[1][0] = "bb";
    inputStr[1][1] = "bbb";
    inputStr[1][2] = "2222";
    inputStr[2][0] = "cc";
    inputStr[2][1] = "ccc";
    inputStr[2][2] = "3333";
    fillYears(inputStr,3,str);
}

在前2个名字中,我找到了年份,并将str中的****替换为年份,但在第三个名称中我得到错误。

请求帮助。

0 个答案:

没有答案
相关问题