我对搜索有疑问,并在另一个字符串中替换子字符串。
我有一些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
中的****替换为年份,但在第三个名称中我得到错误。
请求帮助。