void xstrcpy ( char *t, char *s );
void main(void ) {
char source[ ] = "Sayonara" ;
char target[20] ;
xstrcpy ( target, source ) ;
printf ( "\nsource string = %s", source);
printf ( "\ntarget string = %s", target ) ;
}
void xstrcpy ( char *t, char *s ) {
while ( *s != '\0' ){
*t = *s ;
t++ ; s++ ;
}
*t = '\0' ;
}
このコードは出力を提供します:
source string = Sayonara
target string = Sayonara
しかし、に変更char target[20];
すると、次char target[8];
のようになります。
source string = target string = Sayonara
に変更char target[20];
すると、次char target[4];
のようになります。
source string = nara
target string = Sayonara
に変更char target[20];
すると、次char target[3];
のようになります。
source string = nara
target string = Sayonara
ソース値が変更され、ターゲットが文字列のサイズの配列になるのはなぜですか?