二つの値を交換する関数を作る。 //********************************************************* // 二つの int 型の変数 a, b の値を交換する。 //********************************************************* void SwapInt( int *a, int *b ) { int nTmp; nTmp = *a; *a = *b; *b = nTmp; }//SwapInt //********************************************************* // va から size バイトの内容と、vb から size バイトの内容を交換する。 //********************************************************* void memswap ( void *va, void *vb, size_t size ) { char *ca; char *cb; char cTmp; {for( ca = (char *)va, cb = (char *)vb; 0 < size; --size, ++ca, ++cb ) { cTmp = *ca; *ca = *cb; *cb = cTmp; }} }//memswap 使用例// 関数 memswap() の使用例です。 int main( void ) { char ca = 'A'; char cb = 'Z'; long la = 0; long lb = LONG_MAX; char *pa = "やあ、兄くん……"; char *pb = "おにいたま〜"; char *pc = "兄チャマ、チェキよぅっ!"; printf( " ca=%c, cb=%c\n", ca, cb ); memswap( &ca, &cb, sizeof(char) ); printf( "→ ca=%c, cb=%c\n\n", ca, cb ); printf( " la=%ld, lb=%ld\n", la, lb ); memswap( &la, &lb, sizeof(long) ); printf( "→ la=%ld, lb=%ld\n\n", la, lb ); printf( " pa=[%s], pb=[%s]\n", pa, pb ); memswap( &pa, &pb, sizeof(char *) ); printf( "→ pa=[%s], pb=[%s]\n\n", pa, pb ); printf( " pc=[%s]\n", pc, pc ); memswap( &pc, &pc, sizeof(char *) ); printf( "→ pc=[%s], pc=[%s]\n\n", pc, pc ); return 0; }//main 実行結果ca=A, cb=Z → ca=Z, cb=A la=0, lb=2147483647 → la=2147483647, lb=0 pa=[やあ、兄くん……], pb=[おにいたま〜] → pa=[おにいたま〜], pb=[やあ、兄くん……] pc=[兄チャマ、チェキよぅっ!], pc=[兄チャマ、チェキよぅっ!] → pc=[兄チャマ、チェキよぅっ!], pc=[兄チャマ、チェキよぅっ!] |
|