using namespace std;
//간단한 텍스트 뒤집기
void recive(char s[])
{
for(int i=0, j=strlen(s)-1; i<j; ++i, --j){
char t = s[i];
s[i] = s[j];
s[j] = t;
}
}
//안전한 메모리 복사
//차라리 memcpy_s 사용할것 이건 안에 어셈이라 더 빠름
bool MyMemCpy(void *dest, void *src, size_t len)
{
char *des8 = (char*)dest;
char *src8 = (char*)src;
/////////////////////////////////
//dest ■■■■■ //1.dest 메모리 영역안에 src가 있거나
// src □□□□□
// dest ■■■■■ //2.src 메모리 영역안에 dest가 있으면 안됨
/////////////////////////////////
if((des8 <= src8 //1검사
&& src8 <= dest8+len)
||(src8 <= des8 //2검사
&& des8 <= src8+len))
{
return false;
}
while(len--){
*des8++ = *src8++;
}
return true;
}
//////////////////////////////////////////////
int main()
{
char s[5] = {'a','b','c','d', '\0'};
char d[5];
for(int i=0; i<strlen(s); ++i){
cout << s[i] << ',';
}
cout << endl;
recive(s);
for(int i=0; i<strlen(s); ++i){
cout << s[i] << ',';
}
cout << endl;
if(MyMemCpy(&s[3], &s[0], _countof(d))){
for(int i=0; i<strlen(d); ++i){
cout << d[i] << ',';
}
}
return 0;
}
'C/C++언어' 카테고리의 다른 글
printf의 흔하진 않지만 때론 굉장히 필요한 포맷들 (0) | 2013.10.23 |
---|---|
memcpy에 대한 고찰... (0) | 2012.11.27 |
[ VC11-C++11 ] range base for - 1 (0) | 2012.09.24 |
코드 최적화 팁 (0) | 2012.09.10 |
CAtlMap 사용법 정리 (0) | 2012.08.25 |