복사 함수(memmove)를 이용해서 하는대 잘 안되서요 ;;;

hongtting의 이미지

func(char *str)
{
char *s = str;
char *c;
int n;

if(c=index(s,'['))
{
n = strlen(c+1)+1;
memmove(c+2, c+1, n);
*(c+1) = '/';
}

printf("%s\n", s);

return 0;
}

main()
{

func("[IP]");
return 0;
}

결과가 [/IP] 이렇게나와야 하는데 어디가 문제인지 잘 안되서 문의 드립니다^^

Munsen의 이미지

if(c=index(s,'['))
이게 문제가 아닐까요?
if (c==index(s,'[')

winner의 이미지

"[IP]" 는 문자열 literal 인데 이걸 그대로 사용해서 수정하면 안됩니다.
또한 만일 null 문자까지 꽉 들어찬 char 배열에 담을 경우 역시 '/' 을 위한 공간이 없게 되어서 문제를 일으킵니다.