void main()
{
/**********************************************************************
* ===== Char* 버퍼에 여러 종류의 데이터 처리 =====
*
* -> buffer에 여러 종류의 data를 input, output 할 수 있다.
* -> 기억해 둬야 할 것은 type의 data size이다.
* -> buffer에 input 계산해 건너 뛰고 이어서 input 해야 때문.
* -> 다시 output 할려면 buffer에 해당 길이 +해서 가져온다.(주소 이동)
*
* -> 버퍼 적재 방법
* : 모든 타입은 마지막에 '/0' 즉, NULL이 반드시 기록되어 있다.
* 그래서 각 type의 data들을 버퍼 안에 넣어 둬도 혼란이 없다.
* 하지만 그 데이터의 타입과 길이는 알고 있어야 한다.
* 길이는 input 할때 데이터가 덮어쓰지 않기 위해서고, 타입은 output시
* 넣어 줄 변수의 타입에서 필요 하기 때문이다.
***********************************************************************/
char szBuffer[65536]; // Buffer 64K
int nTotalSize = 0; // nTotal Length
int nStageSize = 0; // nStage Length
int nTotal = 5564; // Total Data
char cStage = 3; // Stage Data
int nReturnTotal = 0; // Output Total Data
char cReturnStage = 0; // Output Stage Data
// Buffer Initial
ZeroMemory( szBuffer, sizeof( char ) *65536 );
// Data Length
nTotalSize = sizeof( int );
nStageSize = sizeof( char );
// Buffer Input
memcpy( szBuffer, &nTotal, sizeof( int ) );
memcpy( szBuffer +nTotalSize, &cStage, sizeof( char ) );
printf( "Test <int> : %d \n", szBuffer );
// -> Test <int> : 1242476
printf( "Test <char*> : %s \n", szBuffer );
// -> Test <char*> : ?
// Buffer Output
memcpy( &nReturnTotal, szBuffer, nTotalSize );
memcpy( &cReturnStage, szBuffer +nTotalSize, nStageSize );
printf( "nReturnTotal : %d \n", nReturnTotal );
// -> nReturnTotal : 5564
printf( "cReturnStage : %d \n", cReturnStage );
// -> nReturnStage : 3
}
'[ Programing ] > C++' 카테고리의 다른 글
[기초] class에 있는 메소드를 일회용성으로 불러 오기. (0) | 2010.01.31 |
---|---|
[기초] friend 정리 (0) | 2010.01.31 |
const, const int, int* const, const int* const n 설명 (0) | 2010.01.31 |
parameter++; 과 ++parameter; 의 차이. (0) | 2010.01.31 |
[ Casting의 종류 ] static_cast, dynamic_cast, const_cast, reinterpret_cast (0) | 2010.01.31 |