// php로 치면 strpos 함수랑 같은 동작을 한다
// source + offset에서 pattern이 등장하는 오프셋을 반환하는 함수.
int find_str(char source[], int offset, char pattern[]){
int plen = strlen(pattern), slen = strlen(source + offset), i, j, r;
// 자 패턴이 소스보다 더길대ㅋ 절대 일치하는 부분이 존재할 리가 없지
if(slen < plen)
return -1;
// 어? 두개 길이가 같네? 그럼 걍 비교돌리고 일치하면 offset 날리고 아니면 -1날려버려
if(slen == plen)
return (strcmp(source + offset, pattern) == 0 ? offset : -1);
for(i = offset; i < slen + offset; i++){
r = 1; // 일단 일치하는 거라고 가정한다
for(j = 0; j < plen; j++){
if(pattern[j] != source[i + j]){ // 다른 문자 한개 찾앗어
r = 0; // 그럼 일치 안한다고 일러바치고
break;
}
}
if(j <= plen - 1 && r == 1) // 어 근데 j가 패턴 길이보다 작네? 그런데 어떻게 일치할까?
r = 0; // 일치 안한다고 고쳐놓고 (일치하는걸 찾았을리가 없지)
if(r == 1){ // 일치하면
return i; // 현재 오프셋 리턴
}
}
return -1; // 아 절대 못찾아
}
혹시나 해서 돌려봣다
댓글 0