|
한글이나 영문자등의 문자열을 역으로 출력하는 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);
}
|