strstr string matching
-
Encontre a mesma string na primeira string que a segunda string, se houver, retorne o primeiro endereço da segunda string na primeira string.
-
Implementação de função
char* my_strstr(char* str, char* sub) { while (*str) { if (*str != *sub) { str++; } else { char* stri = str; char* subi = sub; while (*subi && *stri == *subi && *stri) { subi++; stri++; } if (*stri == "\0") { return NULL; } if (*subi == '\0') { return str; } else { str++; } } } return NULL; }
Primeiro, combine a primeira letra da segunda string na primeira string. Se não for, mova o ponteiro da primeira string para trás. Se for igual, registre-o na primeira string e o endereço na segunda string é o caractere comparado por caractere a partir desses dois ponteiros. A condição de loop é que uma das duas strings não pode ficar vazia sozinha, e os caracteres nas duas strings são iguais e essas três condições são atendidas. Dois ponteiros ++, se a primeira string terminar antes , ou seja, não há uma segunda string na primeira string e NULL pode ser retornado antecipadamente. Se a segunda string estiver vazia, significa que foi encontrada. Caso contrário, ela não foi encontrada e, em seguida, pesquise na substring após a primeira corda.