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; }
댓글 입력