fork download
  1. #include <stdio.h>
  2. void cat_data(int *data1, const int *data2, int len2) {
  3. for (int i = 0; i < len2; i++) {
  4. data1[i] = data2[i];
  5. }
  6. }
  7.  
  8. int main(void) {
  9. int data1[7];
  10. int data2[5];
  11. int start_pos = 0;
  12.  
  13. // 「値が0ではない」かつ「配列の限界を超えていない」間、次へ進む
  14. while (data1[start_pos] != 0 && start_pos<7) {
  15. start_pos++;
  16. }
  17.  
  18. // この時点で start_pos は「3」になっています(10, 20, 30 の次の 0 の場所)
  19.  
  20. // 2. data2 の長さを計算
  21. int len2 = sizeof(data2) / sizeof(data2[0]);
  22.  
  23. // 3. 関数呼び出し
  24. // data1の先頭ではなく、「見つけた続きの場所(&data1[start_pos])」を渡す
  25. cat_data(&data1[start_pos], data2, len2);
  26.  
  27. // 結果出力(データの切れ目まで表示)
  28. printf("--- 連結結果 ---\n");
  29. for (int i = 0; i < 20; i++) {
  30. // 0が出たら表示終了とする(見やすくするため)
  31. if (data1[i] == 0) break;
  32. printf("data1[%d] = %d\n", i, data1[i]);
  33. }
  34.  
  35. return 0;
  36. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
--- 連結結果 ---
data1[0] = 194