|
저도 질문 할께요..
int size=strlen(str)+1;
str2-=size;
이렇게 해도 되지만..
int size=strlen(str);
str2-=size+1;
이렇게 해도 되더군요;;
그래서 값을 더 변경 해봤습니다..
int size=strlen(str)-100;
str2-=size+101;
이렇게 해도 되더군요..;;
calloc 만 그런가 싶어
malloc으로도 시도 해봤는데 역시나 잘됩니다..;;
원래 이런가여?
ㅅㅅㅎ 님이 쓰신 글 :
: 오류입니다.
:
: while루프에서 이미 '\0'문자 까지 카피되었습니다.
: *str2 = '\0'; 는 '\0'가 카피된 다음 번지(할당되지 않은)에 쓰게 됩니다.
:
: 권혁준 님이 쓰신 글 :
: : NULL 로 호출한건 아니고요
: : 희안한게 while 로 하지 않고
: : 그냥 memcpy 나 strcpy로 하면 에러가 안납니다.
: : VC++로 했습니다
: :
: :
: : 송신영 님이 쓰신 글 :
: : : 혹시 작성하신 함수 호출할 때 인자로 NULL 값을 넣으신거 아닌가요?
: : : test() 함수 안에서 들어온 인자 값이 NULL인지 확인 후
: : : 적절한 처리를 해줘야합니다.
: : : NULL일 경우도 아래 코드 수행되면 Error 입니다....
: : : 그런데 NULL이면 strlen()에서 이미 Error가 날텐데... 쩝...
: : :
: : : 송신영 님이 쓰신 글 :
: : : : 저는 에러 안나는데요...
: : : : C++ Builder 2010...
: : : :
: : : : 권혁준 님이 쓰신 글 :
: : : : : 주소가 다르다는게 str2 를 말씀하시는건지요?
: : : : : 아래처럼 해봤을때 같은 주소가 나오는데요 어떤거 말씀하시는건지 모르겠어요.
: : : : :
: : : : : void test(char* str){
: : : : : int i=0;
: : : : : int size=strlen(str)+1;
: : : : : char *str2;
: : : : :
: : : : : str2 = (char *)calloc(size, sizeof(char));
: : : : :
: : : : : printf("%x\n", str2); <== 주소 : 1d1478 출력
: : : : :
: : : : : while(*str2++ = *str++);
: : : : : *str2 = '\0';
: : : : :
: : : : : str2-=size;
: : : : : str-=size;
: : : : : printf("%s %s\n", str2, str);
: : : : :
: : : : : printf("%x\n", str2); // <== 주소 : 1d1478 출력
: : : : :
: : : : : free(str2);
: : : : : }
: : : : :
: : : : :
: : : : : Lyn 님이 쓰신 글 :
: : : : : : 처음할당한 str2랑 해제시의 str랑 위치가 다르네요.
: : : : : :
: : : : : : 권혁준 님이 쓰신 글 :
: : : : : : : void test(char* str){
: : : : : : : int i=0;
: : : : : : : int size=strlen(str)+1;
: : : : : : : char *str2;
: : : : : : :
: : : : : : : str2 = (char *)calloc(size, sizeof(char));
: : : : : : :
: : : : : : : while(*str2++ = *str++);
: : : : : : : *str2 = '\0';
: : : : : : :
: : : : : : : str2-=size;
: : : : : : : str-=size;
: : : : : : : printf("%s %s\n", str2, str);
: : : : : : :
: : : : : : : free(str2);
: : : : : : : }
: : : : : : :
: : : : : : : 안녕하세요. 공부중에 도저히 몰라서 질문드립니다.
: : : : : : : 위 함수를 실행시키면 제일 아래 free 에서 에러가 나는데 왜 그런지 알고싶습니다.
: : : : : : : 문자열조작하는거 공부중인데 많이 어렵네요.
|