fork download
  1. #include <stdio.h>
  2.  
  3. #define DATA1_SIZE 7
  4. #define DATA2_SIZE 5
  5.  
  6. void cat_data(int *data1, int *data2, int len2) {
  7. int i = 0;
  8.  
  9. // data1の中で0ではない部分をカウント(0を空きとみなす)
  10. while (i < DATA1_SIZE && data1[i] != 0) {
  11. i++;
  12. }
  13.  
  14. int j = 0;
  15. while (i < DATA1_SIZE && j < len2) {
  16. data1[i++] = data2[j++];
  17. }
  18. }
  19.  
  20. int main() {
  21. int data1[DATA1_SIZE] = {0};
  22. int data2[DATA2_SIZE];
  23.  
  24. printf("data1(最大 %d 個、終了は 0 を入力):\n", DATA1_SIZE);
  25. for (int i = 0; i < DATA1_SIZE; i++) {
  26. scanf("%d", &data1[i]);
  27. if (data1[i] == 0) break; // 0が入力されたら終了(空きとみなす)
  28. }
  29.  
  30. printf("data2(%d 個)を入力:\n", DATA2_SIZE);
  31. for (int i = 0; i < DATA2_SIZE; i++) {
  32. scanf("%d", &data2[i]);
  33. }
  34.  
  35. cat_data(data1, data2, DATA2_SIZE);
  36.  
  37. printf("連結後のdata1:\n");
  38. for (int i = 0; i < DATA1_SIZE; i++) {
  39. if (data1[i] != 0)
  40. printf("%d ", data1[i]);
  41. }
  42. printf("\n");
  43.  
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0s 5284KB
stdin
1 2
3 4 5 6 7 
stdout
data1(最大 7 個、終了は 0 を入力):
data2(5 個)を入力:
連結後のdata1:
1 2 3 4 5 6 7