#include <stdio.h>
// 課題で定義が求められている関数
// data2の要素をdata1の既存の要素の後ろにコピーする。
void cat_data(int *data1, const int *data2, int len2) {
// data1の初期要素数(この例では2)は既知であると仮定し、
// data2の要素をdata1[2]以降にコピーしていく。
// 一般的な配列結合では、data1の現在の有効な長さも引数として渡すことが多いが、
// この課題の例の図から、data1の初期要素数(1, 2)は2であると判断する。
int data1_initial_length = 2; // data1の初期要素数(1と2が既に入っている部分)
// data2の要素をdata1の末尾から順番にコピーする
for (int i = 0; i < len2; i++) {
// data1のコピー開始位置は data1_initial_length (つまり data1[2])
data1[data1_initial_length + i] = data2[i];
}
}
int main(void) {
// 1. 配列の初期化
// data1[7] の初期値は図から 1, 2。残りは未初期化。
int data1[7] = {1, 2};
// data2[5] の初期値は図から 3, 4, 5, 6, 7。
const int data2[5] = {3, 4, 5, 6, 7};
// 2. len2 の計算
// sizeof演算子を使ってdata2の長さ(要素数)を求める。
// sizeof(data2) は配列全体のバイト数
// sizeof(data2[0]) はint型(1要素)のバイト数
// 全体のバイト数 / 1要素のバイト数 = 要素数
int len2 = sizeof(data2) / sizeof(data2[0]);
// 確認のための出力(任意)
// printf("data2の長さ len2 = %d\n", len2);
// 3. cat_data関数の呼び出し(配列の連結)
// 配列名を関数に渡すと、先頭要素へのポインタとして渡される
cat_data(data1, data2, len2);
// 4. 連結後のdata1の出力
// data1の全要素(7個)を出力する
for (int i = 0; i < 7; i++) {
printf("data1[%d] = %d\n", i
, data1
[i
]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDoqrLpoYzjgaflrprnvqnjgYzmsYLjgoHjgonjgozjgabjgYTjgovplqLmlbAKLy8gZGF0YTLjga7opoHntKDjgpJkYXRhMeOBruaXouWtmOOBruimgee0oOOBruW+jOOCjeOBq+OCs+ODlOODvOOBmeOCi+OAggp2b2lkIGNhdF9kYXRhKGludCAqZGF0YTEsIGNvbnN0IGludCAqZGF0YTIsIGludCBsZW4yKSB7CiAgICAvLyBkYXRhMeOBruWIneacn+imgee0oOaVsO+8iOOBk+OBruS+i+OBp+OBrzLvvInjga/ml6Lnn6XjgafjgYLjgovjgajku67lrprjgZfjgIEKICAgIC8vIGRhdGEy44Gu6KaB57Sg44KSZGF0YTFbMl3ku6XpmY3jgavjgrPjg5Tjg7zjgZfjgabjgYTjgY/jgIIKICAgIC8vIOS4gOiIrOeahOOBqumFjeWIl+e1kOWQiOOBp+OBr+OAgWRhdGEx44Gu54++5Zyo44Gu5pyJ5Yq544Gq6ZW344GV44KC5byV5pWw44Go44GX44Gm5rih44GZ44GT44Go44GM5aSa44GE44GM44CBCiAgICAvLyDjgZPjga7oqrLpoYzjga7kvovjga7lm7PjgYvjgonjgIFkYXRhMeOBruWIneacn+imgee0oOaVsO+8iDEsIDLvvInjga8y44Gn44GC44KL44Go5Yik5pat44GZ44KL44CCCiAgICBpbnQgZGF0YTFfaW5pdGlhbF9sZW5ndGggPSAyOyAvLyBkYXRhMeOBruWIneacn+imgee0oOaVsO+8iDHjgagy44GM5pei44Gr5YWl44Gj44Gm44GE44KL6YOo5YiG77yJCgogICAgLy8gZGF0YTLjga7opoHntKDjgpJkYXRhMeOBruacq+WwvuOBi+OCiemghueVquOBq+OCs+ODlOODvOOBmeOCiwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHsKICAgICAgICAvLyBkYXRhMeOBruOCs+ODlOODvOmWi+Wni+S9jee9ruOBryBkYXRhMV9pbml0aWFsX2xlbmd0aCAo44Gk44G+44KKIGRhdGExWzJdKQogICAgICAgIGRhdGExW2RhdGExX2luaXRpYWxfbGVuZ3RoICsgaV0gPSBkYXRhMltpXTsKICAgIH0KfQoKaW50IG1haW4odm9pZCkgewogICAgLy8gMS4g6YWN5YiX44Gu5Yid5pyf5YyWCiAgICAvLyBkYXRhMVs3XSDjga7liJ3mnJ/lgKTjga/lm7PjgYvjgokgMSwgMuOAguaui+OCiuOBr+acquWIneacn+WMluOAggogICAgaW50IGRhdGExWzddID0gezEsIDJ9OwoKICAgIC8vIGRhdGEyWzVdIOOBruWIneacn+WApOOBr+Wbs+OBi+OCiSAzLCA0LCA1LCA2LCA344CCCiAgICBjb25zdCBpbnQgZGF0YTJbNV0gPSB7MywgNCwgNSwgNiwgN307CgogICAgLy8gMi4gbGVuMiDjga7oqIjnrpcKICAgIC8vIHNpemVvZua8lOeul+WtkOOCkuS9v+OBo+OBpmRhdGEy44Gu6ZW344GV77yI6KaB57Sg5pWw77yJ44KS5rGC44KB44KL44CCCiAgICAvLyBzaXplb2YoZGF0YTIpIOOBr+mFjeWIl+WFqOS9k+OBruODkOOCpOODiOaVsAogICAgLy8gc2l6ZW9mKGRhdGEyWzBdKSDjga9pbnTlnovvvIgx6KaB57Sg77yJ44Gu44OQ44Kk44OI5pWwCiAgICAvLyDlhajkvZPjga7jg5DjgqTjg4jmlbAgLyAx6KaB57Sg44Gu44OQ44Kk44OI5pWwID0g6KaB57Sg5pWwCiAgICBpbnQgbGVuMiA9IHNpemVvZihkYXRhMikgLyBzaXplb2YoZGF0YTJbMF0pOwoKICAgIC8vIOeiuuiqjeOBruOBn+OCgeOBruWHuuWKm++8iOS7u+aEj++8iQogICAgLy8gcHJpbnRmKCJkYXRhMuOBrumVt+OBlSBsZW4yID0gJWRcbiIsIGxlbjIpOwoKICAgIC8vIDMuIGNhdF9kYXRh6Zai5pWw44Gu5ZG844Gz5Ye644GX77yI6YWN5YiX44Gu6YCj57WQ77yJCiAgICAvLyDphY3liJflkI3jgpLplqLmlbDjgavmuKHjgZnjgajjgIHlhYjpoK3opoHntKDjgbjjga7jg53jgqTjg7Pjgr/jgajjgZfjgabmuKHjgZXjgozjgosKICAgIGNhdF9kYXRhKGRhdGExLCBkYXRhMiwgbGVuMik7CgogICAgLy8gNC4g6YCj57WQ5b6M44GuZGF0YTHjga7lh7rlipsKICAgIHByaW50Zigi5Ye65Yqb57WQ5p6c5L6LXG4iKTsKICAgIC8vIGRhdGEx44Gu5YWo6KaB57Sg77yIN+WAi++8ieOCkuWHuuWKm+OBmeOCiwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBwcmludGYoImRhdGExWyVkXSA9ICVkXG4iLCBpLCBkYXRhMVtpXSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K