演習課題「ループ処理で配列をコピーしよう」
右のコードエリアには、配列 a を配列 b にコピーするプログラムがあります。
このプログラムは未完成です。
このプログラムにコードを追加して、配列をコピーするプログラムを完成させてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
100
200
300
400
500
演習課題「memcpy で配列をコピーしよう」
右のコードエリアには、配列 a を配列 b にコピーするプログラムがあります。
このプログラムは未完成です。
このプログラムにコードを追加して、配列をコピーするプログラムを完成させてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
100
200
300
400
500
#04:ループで配列を処理しよう
ここでは、ループ処理で配列を扱ってみたいと思います。
そのために、for を使って配列を操作してみましょう。
#include <stdio.h>
int main(void)
{
int a[3];
a[0] = 100;
a[1] = 200;
a[2] = 300;
for (int i = 0; i < 3; i++) {
printf("%d\n", a[i]);
}
}
#include <stdio.h>
int main(void)
{
int a[3];
a[0] = 100;
a[1] = 200;
a[2] = 300;
int b[3];
for (int i = 0; i < 3; i++) {
b[i] = a[i];
}
}
#include <stdio.h>
#include <string.h>
int main(void)
{
int a[3];
a[0] = 100;
a[1] = 200;
a[2] = 300;
int b[3];
memcpy(b, a, sizeof(b));
}
memcpy の
・1 つ目の引数にコピー先の配列、
・2 つ目の引数にコピー元の配列、
・3 つ目の引数にコピーするサイズ (バイト数)
を指定します。
配列 b のサイズは sizeof(b) で取得できます。
このチャプターで作成したコードです。// ループで配列を処理しよう
#include <stdio.h>
#include <string.h>
int main(void)
{
int a[3];
a[0] = 100;
a[1] = 200;
a[2] = 300;
int b[3];
// b = a; // これはエラーになる
// for (int i = 0; i < 3; i++) {
// b[i] = a[i];
// }
memcpy(b, a, sizeof(b));
for (int i = 0; i < 3; i++) {
printf("%d\n", b[i]);
}
}