int main()
{
char a[30] = "programinglsunderstanding";
char s[30];
int i;
int j;
int k = 0;
int count = 0;
printf("%s\n", a);
printf("검색 할 문자열 : \n");
scanf("%s", &s);
for (i = 0; i<30; i++)
{
if (a[i] == s[0])
{
k = 0;
while (s[k] != '\0')
{
if (a[i + k] == s[k])
{
a[i + k] = ' ';
k++;
}
}
count++;
}
}
printf("횟수 : %d", count);
printf("\n");
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] != ' ')
printf("%c", a[i]);
}
}
일단
출력화면을 말씀드리면
ProgramingIsunderstanding // 출력
ing //입력
횟수 : 2 // ing문자열이 두개 있으므로
ProgramIsunderstand // ing문자열만 쏙 빼고 출력..
완벽하게 구현한 프로그램인 줄 알았는데 한가지 문제점을 발견했습니다.
처음 배열에 입력 문자열이 "Programingisunderstanding" 인경우입니다.
위에 볼드체로 표시했는데요.
if (a[i] == s[0])
이 조건이 Program(ing)(i)sunderstanding
즉 입력한 ing를 기존 문자열에서 찾고 난뒤
다시 바로뒤에 i가 나오면 입력한 문자열 ing의 첫번째와 다시 중복되는바람에
결과화면 Programsunderstand //(그냥 Programisunderstand라고 출력하고싶은데요..)
라고 출력되는 결과가 나타납니다..
어떻게 하면 해결할 수 있을까요? ㅠㅠ