memcpyでゴミが付加されてしまう・・・
Posted: 2009年2月11日(水) 18:54
以下【ソース例】のように文字列を分割して
格納させようとしたのですが、【出力結果】のように
最後にゴミが付加されてしまいます。
ネットで調べてみたのですが、原因がわかりませんでした。。。
すいませんが、原因と解決策をご教示頂きたいです。
【ソース例】
typedef struct st {
char* a;
} ST;
main( void )
{
ST st;
char* a1;
char* a2;
memset( st, 0, sizeof( ST ) );
a1 = ( char * )calloc( 10, sizeof( char ) );
a2 = ( char * )calloc( 10, sizeof( char ) );
st->a = '12345ABCDEあああああ';
memcpy( a1 , st->a , sizeof( char[10] ) );
memcpy( a2 , st->a+10, sizeof( char[10] ) );
printf( "a1 = %c\n", a1 );
printf( "a2 = %c\n", a2 );
free( a1 );
free( a2 );
}
【出力結果】
a1 = 12345ABCDE"#?
a2 = あああああ・
格納させようとしたのですが、【出力結果】のように
最後にゴミが付加されてしまいます。
ネットで調べてみたのですが、原因がわかりませんでした。。。
すいませんが、原因と解決策をご教示頂きたいです。
【ソース例】
typedef struct st {
char* a;
} ST;
main( void )
{
ST st;
char* a1;
char* a2;
memset( st, 0, sizeof( ST ) );
a1 = ( char * )calloc( 10, sizeof( char ) );
a2 = ( char * )calloc( 10, sizeof( char ) );
st->a = '12345ABCDEあああああ';
memcpy( a1 , st->a , sizeof( char[10] ) );
memcpy( a2 , st->a+10, sizeof( char[10] ) );
printf( "a1 = %c\n", a1 );
printf( "a2 = %c\n", a2 );
free( a1 );
free( a2 );
}
【出力結果】
a1 = 12345ABCDE"#?
a2 = あああああ・