사랑전쟁 님이 쓰신 글 :
: pDest = dest = (char *)malloc(sizeof(pStr)+1);
:
: sizeof(pStr) 이 구문은 다음과 같이 해석될 수 있습니다.
:
: sizeof(char *)
:
: 따라서, pionter 사이즈(컴파일러마다 다를 수 있음, 4byte )를 반환합니다.
:
: char *의 문자열의 크기를 구하고 싶다면 문자열의 크기를 반환하는 함수를 사용하시기 바랍니다.
:
:
: 아울러, nested assigned 은 컴파일러 마다 다를 수 있기에 다음과 같이 쓰는 것이 좋습니다.
:
: dest = (char *)malloc(sizeof(pStr)+1);
:
: pDest = dest ;
:
: 따9 님이 쓰신 글 :
: : 한글이나 영문자등의 문자열을 역으로 출력하는 reverse 함수를 만들려 하는데...
: : 아래 소스를 Turbo c 에서 돌리면 경고도 없고 잘 돌아 갑니다..
: : 근데 .. 비주얼 씨에서 돌리면 경고도 없고 아무 이상이 없는데..
: : 실행하면.. 메모리 에러가 나는 군요...
: : 동적 할당한 부분을 해제하려 하면 에러가 납니다..
: : 아시는분 계심 부탁드립니다... 그럼 즐프...
: : ---------------------------------------------------------------------//
: : #include <stdio.h>
: : #include <string.h>
: : #include <malloc.h>
: :
: : void hstrrev(char *pStr)
: : {
: : char *dest,*pDest;
: : int len=0, i=0;
: : pDest = dest = (char *)malloc(sizeof(pStr)+1);
: : strcpy(dest,pStr);
: :
: : for(;*dest;dest++)
: : len++;
: : dest--;
: :
: : while(1)
: : {
: : if( (*dest & 0x80) != 0)
: : { // 2바이트 이동...
: : strncpy(pStr+i,dest-1,2);
: : len -= 2;
: : dest = dest-2;
: : i=i+2;
: : }
: : else
: : { // 1바이트 이동...
: : strncpy(pStr+i,dest,1);
: : len--;
: : dest--;
: : i++;
: : }
: : if(len == 0) break;
: : }
: :
: : strcpy(pStr+i,"\0");
: : free(pDest);
: : }
: :
: : void main()
: : {
: : char str3[100] = "피노키오abc";
: : puts(str3);
: : hstrrev(str3);
: : puts(str3);
: : }
|