C언어 문자열 찾기, strstr 구현하기

조회수 1003회
  • strstr() 사용x
  • 일치하는 문자열 갯수 찾기

count가 계속 0이라고 뜹니다.

#include <stdio.h>
#include <string.h>

void countString(char string[256], char key[256]) {
    int start = 0, i = 0, count = 0;

    while (string[start] != '\0') {
        if (string[start] == key[i]) {
            if (i == strlen(key)) {
                count++;
                i = 0;
            }
            else i++;
        }
        start++;

    }

    printf("key strings : %d", count);
}

void main() {
    char string[256], key[256];

    printf("Type string : ");
    gets_s(string);
    printf("Type key string : ");
    gets_s(key);

    countString(string, key);

}

1 답변

  • 포인터 사용하면 쉽습니다. 배열이 스택에 어떻게 넣어지는지 확인하시면 질문자님과 동일한 방법으로 결과 얻으실 수 있으십니다.

    #include <stdio.h>
    
    int cstrlen(char *s) {
            char *t;
            int c=0;
            while(1) {
                    t = s+c;
                    if (*t == '\0'){
                            break;
                    } else c++;
            }
            return c;
    }
    
    int cstrstr(char *p, char *k) {
            int pl,kl,r=0,ptr=0,sptr=0;
            pl = cstrlen(p);
            kl = cstrlen(k);
            while(ptr < pl) {
                    if (*(p+ptr) == *(k+sptr)) {
                            sptr++;
                            if (sptr == kl){
                                    r++;
                                    sptr = 0;
                            }
                    } else if (*(p+ptr) != *(k+sptr) && sptr != 0) {
                            sptr = 0;
                    }
                    ptr++;
            }
            return r;
    }
    
    int main() {
            char *p = "hello hello h4ell432e";
            char *k = "ell";
            printf("%d\n",cstrstr(p, k)); // 3
            char a[256] = "hello hhhl asfhh";
            char b[256] = "hh";
            printf("%d\n", cstrstr(a,b)); // 2
            return 0;
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)