//配列のコピーの方法

 

<STEP1>

1つずつ代入する方法

*******************************************************

int main(){

int int_array1[3] = {54, 65, 92};

 

//同じ型・大きさの配列を作る

int int_array2[3];

 

//1つずつ代入

int_array2[0] = int_array1[0];

int_array2[1] = int_array1[1];

int_array2[2] = int_array1[2];

 

return 0;

}

*******************************************************

 


<STEP2>

for文を使って、1つずつ代入する方法

*******************************************************

int main(){

int int_array1[3] = {54, 65, 92};

 

//同じ型・大きさの配列を作る

int int_array2[3];

 

//for文を使って1つずつ代入

int i;

for(i=0; i<3; ++i){

int_array2[i] = int_array1[i];

}

 

return 0;

}

*******************************************************

 

<STEP3>

**こちらは上級者向けですので、初学者はわからなくてもOKです。

memcpy関数

・string.h をインクルードする

・memcopy(コピー先のアドレス, コピー元のアドレス, コピーするバイト数);

・配列の場合、アドレスは配列名で取得できる

*******************************************************

#include <string.h>

int main(){

int int_array1[3] = {54, 65, 92};

 

//同じ型・大きさの配列を作る

int int_array2[3];

 

//memcpy関数で、メモリの内容を一気にコピー

memcpy(int_array2, int_array1, sizeof int_array1);

return 0;

}

*******************************************************

 

 

 

//演習問題

int型の配列int_array1にユーザに入力してもらった値を格納し、その値を、int_array2にコピーしなさい。

また、int_array2の配列を、表示して、コピーができているかどうか確認を行なってください。

 

↓実行例

*******************************************************

1番目の配列の値を入力してください: 23

2番目の配列の値を入力してください: 43

3番目の配列の値を入力してください: 54

4番目の配列の値を入力してください: 21

5番目の配列の値を入力してください: 3

6番目の配列の値を入力してください: 123

7番目の配列の値を入力してください: 43

8番目の配列の値を入力してください: 123

9番目の配列の値を入力してください: 43

10番目の配列の値を入力してください: 22

1番目の配列の値は、int_array2[0]=23

2番目の配列の値は、int_array2[1]=43

3番目の配列の値は、int_array2[2]=54

4番目の配列の値は、int_array2[3]=21

5番目の配列の値は、int_array2[4]=3

6番目の配列の値は、int_array2[5]=123

7番目の配列の値は、int_array2[6]=43

8番目の配列の値は、int_array2[7]=123

9番目の配列の値は、int_array2[8]=43

10番目の配列の値は、int_array2[9]=22

*******************************************************

 

↓解答例

*******************************************************

#include <stdio.h>

#define LEN 10

int main(){

//int型の変数int_array1の宣言

int int_array1[LEN];

 

//ユーザに、配列への入力を求める

//ループにはマクロのLENを使う

int i;

for(i=0; i<LEN; ++i){

printf("%d番目の配列の値を入力してください: ",i+1);

scanf("%d", int_array1 + i);

}

 

//int型の変数int_array2の宣言

int int_array2[LEN];

 

//STEP2の方法で、配列をコピー

//**可能な人はSTEP3やSTEP4の方法を試してください

int m;

for(m=0; m<LEN; ++m){

int_array2[m] = int_array1[m];

}

 

//コピーした配列を出力

//ループにはマクロのLENを使う

int n;

for(n=0; n<LEN; ++n){

printf("%d番目の配列の値は、int_array2[%d]=%d\n", n+1, n, int_array2[n]);

}

 

return 0;

}

******************************************************

 

 

 

 

//演習問題

float型の配列 f_array1にユーザに入力してもらった値を格納し、その値を、 f_array2にコピーしなさい。

また、 f_array2の配列を、表示して、コピーができているかどうか確認を行なってください。

 

↓実行例

*******************************************************

1番目の配列の値を入力してください: 23.1

2番目の配列の値を入力してください: 43.2

3番目の配列の値を入力してください: 54.3

4番目の配列の値を入力してください: 21.4

5番目の配列の値を入力してください: 3.5

6番目の配列の値を入力してください: 123.6

7番目の配列の値を入力してください: 43.7

8番目の配列の値を入力してください: 123.8

9番目の配列の値を入力してください: 43.9

10番目の配列の値を入力してください: 22.0

1番目の配列の値は、int_array2[0]=23.100000

2番目の配列の値は、int_array2[1]=43.200000

3番目の配列の値は、int_array2[2]=54.300000

4番目の配列の値は、int_array2[3]=21.400000

5番目の配列の値は、int_array2[4]=3.500000

6番目の配列の値は、int_array2[5]=123.600000

7番目の配列の値は、int_array2[6]=43.700000

8番目の配列の値は、int_array2[7]=123.800000

9番目の配列の値は、int_array2[8]=43.900000

10番目の配列の値は、int_array2[9]=22.000000

*******************************************************