//配列のコピーの方法
<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
*******************************************************