#pragma warning(disable:4996)
char *search(char*, char *);
void replace(char *, char *, char *);
void main()
{
char text[] = "This is a pen.That is a pencil";
replace(text, "pen", "cap");
printf("%s\n", text);
}
char *search(char*text, char *key)
{
int m, n;
char *p;
m = strlen(text);
n = strlen(key);
for (p = text; p <= text + m - n; p++)
{
if (strncmp(p, key, n) == 0)
return p;
}
return NULL;
}
void replace(char *text, char *key, char *rep)
{
char *p;
int i;
p = search(text, key);
while (p != NULL) {
for (i = 0; i < strlen(rep); i++)
{
p[i] = rep[i]; <---------- 이부분이 어케 되는지 모르갔으요. 알려주세요
}
p = search(p + strlen(key), key);
}
}
저부분이 이해가 안되여.다르게 짜봐서 돌려봤는데 다 오류났는데 저거는 왜 살아서 돌아가져?
얌마 strlen 을 for 문 반복조건에 쓰면 어떡하냐. 상수 선언해서 앞으로 빼내야지.
ㄴ 책에는 (int)strlen 그냥 그대로 쓰던데요 ㅇㅅㅇ.. 책보고 따라한 코드인데 전귀찮아서(int) 뺀게 다에요 ㅠㅠ
그럼 책을 갖다버려야지.
저러면 매번 돌면서 문자열 길이를 구한단 말야.
변하지 않는건 미리 반복문 밖에서 구해야지.
text + m - n 도 마찬가지.
정상적으로 도는 코드를 올려 놓고 왜 되냐고 물어보면 질문 자체가 잘못된거고, 제대로 안돌아가는 코드를 올리든지.
strlen 직접 구현할것도 아니면서 strstr 도 모르는 애가 책을 썼나 예제코드가 왜 저모양이지.
아하 그렇군여 ㄷㄷ