/* buff1の内容をbuff2にコピーする 単純編*/これをmemcpyを使うと次のようになります。
int i;
char buff1[20]="abcdefghijk";
char buff2[20]="zzzzzzzzzzz";printf("buff1 = %s, buff2 = %s\n",buff1,buff2);
for( i=0 ; i<sizeof(buff1)/sizeof(buff1[0]) ; i++ ){
buff2[i] = buff1[i];
}printf("buff1 = %s, buff2 = %s\n",buff1,buff2);
/* buff1の内容をbuff2にコピーする memcpy編 */3行のプログラムが1行になっただけですが、たったこれだけでもプログラムが見やすくな ります。memcpyの良いところはプログラムがすっきりするばかりでなく、処理が高速にな る場合があります。これは、ライブラリとして提供されているプログラムがアセンブラで書 かれている可能性があるからです。配列変数をコピーしたい場合はmemcpyと覚えておい てOKでしょう。
char buff1[20]="abcdefghijk";
char buff2[20]="zzzzzzzzzzz";printf("buff1 = %s, buff2 = %s\n",buff1,buff2);
memcpy( buff2 , buff1 , sizeof(buff1)/sizeof(buff1[0]) );
printf("buff1 = %s, buff2 = %s\n",buff1,buff2);
/* memcpyを使うと結果がわからなくなる例 */こういう場合はどうするかは明日紹介します。
char buff[30]="abcdefghijklmnopqrstuvwxyz";
char *p = &buff[1];printf("buff = %s , p = %s\n",buff,p);
memcpy( p , buff , 15 );
printf("buff = %s , p = %s\n",buff,p);