#include #define NULL (0x00) /* インデックス番号を使った場合 */ void myStrcat1( char* to, char* from ) { long index1, index2; index1 = 0; index2 = 0; /* コピー先の文字列の終端(NULL位置)を探す */ while( to[index1] != NULL ){ index1++; /* インデックスのインクリメント */ } /* 文字をコピーする */ while( from[index2] != NULL ){ to[index1] = from[index2]; index1++; /* インデックスのインクリメント */ index2++; /* インデックスのインクリメント */ } /* 最後に NULL をつける */ to[index1] = NULL; } /* 間接演算子を使った場合 */ void myStrcat2( char* to, char* from ) { /* コピー先の文字列の終端(NULL位置)を探す */ while( *to != NULL ){ to++; /* アドレスのインクリメント */ } /* 文字をコピーする */ while( *from != NULL ){ *to = *from; to++; /* アドレスのインクリメント */ from++; /* アドレスのインクリメント */ } /* 最後に NULL をつける */ *to = NULL; } main() { char buf1[100]; char buf2[100]; /* 文字列の初期化 */ buf1[0] = NULL; buf2[0] = NULL; /* コピーの一回目 */ myStrcat1( buf1, "buf1 = " ); myStrcat2( buf2, "buf2 = " ); /* 一回目の画面出力 */ printf( "%s\n", buf1 ); prinft( "%s\n", buf2 ); /* 一回目のコピーに付け足す */ myStrcat1( buf1, "myStrcat1" ); myStrcat2( buf2, "myStrcat2" ); /* 二回目の出力 */ printf( "%s\n", buf1 ); prinft( "%s\n", buf2 ); /* おまけ */ myStrcat2( buf1, buf2 ); printf( "おまけ %s\n", buf1 ); /* おしまい(^m^) */ return 1; }