//https://i...content-available-to-author-only...e.com/WtevWP
#include <stdio.h>
void cat_data(int*, const int*, int);
int len1;
int main(void) {
int i,input, data1[7], data2[5], len2;
input = 0;
printf("整数を入力してください(0で終了します)\n"); for (i = 0; i < 7; i++) {
if (input == 0)break;
data1[i] = input;
}
len1 = i;
printf("整数を入力してください(0で終了します)\n"); for (i = 0; i < 5; i++) {
if (input == 0)break;
data2[i] = input;
}
len2 = i;
cat_data(data1, data2, len2);
printf("data1に連結します(要素数は7まで)\n"); for (int i
= 0; i
< len1
+ len2
&& i
< 7; i
++) printf("%d,", data1
[i
]);
return 0;
}
void cat_data(int* data1, const int* data2, int len2) {
for (int i = 0, j = 0; i < 7; i++) {
if (i >= len1 && j < len2) {
data1[i] = data2[j];
j++;
}
}
}
//以下はプロトタイプのプログラムです.SAに質問し,上記に改善されました.
/*#include <stdio.h>
#define DEF -1
int digit(int);
void cat_data(int*, const int*, int);
int len1;
int main(void) {
int input, data1[7], data2[5], len2;
input = len2 = 0;
for (int i = 0; i < 7; i++) data1[i] = DEF;
//データの初期化
printf("2つの数列を連結します(合計7ケタまで)\n");
do {
printf("data1 0~9999999(7ケタ)までの数字を入力してください:");
if(scanf("%d", &input)!=1) input=-1;
scanf("%*[^\n]%*c");
} while (!(input >= 0 && input <= 9999999));
for (int i = digit(input) - 1; i >= 0; i--) {
data1[i] = input % 10;
input = (input - input % 10) / 10;
}
input = 0;
do {
printf("data2 0~99999(5ケタ)までの数字を入力してください:");
if (scanf("%d", &input) != 1) input = -1;
scanf("%*[^\n]%*c");
} while (!(input >= 0 && input <= 99999));
len2 = digit(input);
for (int i = len2 - 1; i >= 0; i--) {
data2[i] = input % 10;
input = (input - input % 10) / 10;
}
cat_data(data1, data2, len2);
printf("結果:");
for (int i = 0; i < 7; i++) {
if(data1[i]!=DEF) printf("%d", data1[i]);
}
return 0;
}
int digit(int n) {
int x = 1;
while ((n /= 10) > 0) ++x;
return x;
}
void cat_data(int* data1, const int* data2, int len2) {
for (int i = 0, j = 0; i < 7; i++) {
if (data1[i]== DEF && j < len2) {
data1[i] = data2[j];
j++;
}
}
}
*/
Ly9odHRwczovL2kuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tL1d0ZXZXUAojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBjYXRfZGF0YShpbnQqLCBjb25zdCBpbnQqLCBpbnQpOwppbnQgbGVuMTsKCmludCBtYWluKHZvaWQpIHsKCWludCBpLGlucHV0LCBkYXRhMVs3XSwgZGF0YTJbNV0sIGxlbjI7CglpbnB1dCA9IDA7CgoJcHJpbnRmKCLmlbTmlbDjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYQoMOOBp+e1guS6huOBl+OBvuOBmSlcbiIpOwoJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewoJCXByaW50ZigiZGF0YTFbJWRdID0gIiwgaSk7CgkJc2NhbmYoIiVkIiwgJmlucHV0KTsKCQlpZiAoaW5wdXQgPT0gMClicmVhazsKCQlkYXRhMVtpXSA9IGlucHV0OwoJfQoJbGVuMSA9IGk7CgoJcHJpbnRmKCLmlbTmlbDjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYQoMOOBp+e1guS6huOBl+OBvuOBmSlcbiIpOwoJZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewoJCXByaW50ZigiZGF0YTJbJWRdID0gIiwgaSk7CgkJc2NhbmYoIiVkIiwgJmlucHV0KTsKCQlpZiAoaW5wdXQgPT0gMClicmVhazsKCQlkYXRhMltpXSA9IGlucHV0OwoJfQoJbGVuMiA9IGk7CgoJY2F0X2RhdGEoZGF0YTEsIGRhdGEyLCBsZW4yKTsKCglwcmludGYoImRhdGEx44Gr6YCj57WQ44GX44G+44GZKOimgee0oOaVsOOBrzfjgb7jgacpXG4iKTsKCXByaW50Zigi57WQ5p6cOiIpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW4xICsgbGVuMiAmJiBpIDwgNzsgaSsrKSBwcmludGYoIiVkLCIsIGRhdGExW2ldKTsKCglyZXR1cm4gMDsKfQoKdm9pZCBjYXRfZGF0YShpbnQqIGRhdGExLCBjb25zdCBpbnQqIGRhdGEyLCBpbnQgbGVuMikgewoJZm9yIChpbnQgaSA9IDAsIGogPSAwOyBpIDwgNzsgaSsrKSB7CgkJaWYgKGkgPj0gbGVuMSAmJiBqIDwgbGVuMikgewoJCQlkYXRhMVtpXSA9IGRhdGEyW2pdOwoJCQlqKys7CgkJfQoJfQp9CgoKLy/ku6XkuIvjga/jg5fjg63jg4jjgr/jgqTjg5fjga7jg5fjg63jgrDjg6njg6DjgafjgZkuU0Hjgavos6rllY/jgZcs5LiK6KiY44Gr5pS55ZaE44GV44KM44G+44GX44GfLgovKiNpbmNsdWRlIDxzdGRpby5oPgojZGVmaW5lIERFRiAtMQppbnQgZGlnaXQoaW50KTsKdm9pZCBjYXRfZGF0YShpbnQqLCBjb25zdCBpbnQqLCBpbnQpOwppbnQgbGVuMTsKCmludCBtYWluKHZvaWQpIHsKCWludCBpbnB1dCwgZGF0YTFbN10sIGRhdGEyWzVdLCBsZW4yOwoJaW5wdXQgPSBsZW4yID0gMDsKCglmb3IgKGludCBpID0gMDsgaSA8IDc7IGkrKykgZGF0YTFbaV0gPSBERUY7CgkvL+ODh+ODvOOCv+OBruWIneacn+WMlgoKCXByaW50ZigiMuOBpOOBruaVsOWIl+OCkumAo+e1kOOBl+OBvuOBmSjlkIjoqIg37725776A44G+44GnKVxuIik7CglkbyB7CgkJcHJpbnRmKCJkYXRhMSAwfjk5OTk5OTkoN++9ue++gCnjgb7jgafjga7mlbDlrZfjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYQ6Iik7CgkJaWYoc2NhbmYoIiVkIiwgJmlucHV0KSE9MSkgaW5wdXQ9LTE7CgkJc2NhbmYoIiUqW15cbl0lKmMiKTsKCX0gd2hpbGUgKCEoaW5wdXQgPj0gMCAmJiBpbnB1dCA8PSA5OTk5OTk5KSk7CgoJZm9yIChpbnQgaSA9IGRpZ2l0KGlucHV0KSAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJZGF0YTFbaV0gPSBpbnB1dCAlIDEwOwoJCWlucHV0ID0gKGlucHV0IC0gaW5wdXQgJSAxMCkgLyAxMDsKCX0KCglpbnB1dCA9IDA7CgoJZG8gewoJCXByaW50ZigiZGF0YTIgMH45OTk5OSg17725776AKeOBvuOBp+OBruaVsOWtl+OCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhDoiKTsKCQlpZiAoc2NhbmYoIiVkIiwgJmlucHV0KSAhPSAxKSBpbnB1dCA9IC0xOwoJCXNjYW5mKCIlKlteXG5dJSpjIik7Cgl9IHdoaWxlICghKGlucHV0ID49IDAgJiYgaW5wdXQgPD0gOTk5OTkpKTsKCWxlbjIgPSBkaWdpdChpbnB1dCk7Cglmb3IgKGludCBpID0gbGVuMiAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJZGF0YTJbaV0gPSBpbnB1dCAlIDEwOwoJCWlucHV0ID0gKGlucHV0IC0gaW5wdXQgJSAxMCkgLyAxMDsKCX0KCgljYXRfZGF0YShkYXRhMSwgZGF0YTIsIGxlbjIpOwoKCXByaW50Zigi57WQ5p6cOiIpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCA3OyBpKyspIHsKCQlpZihkYXRhMVtpXSE9REVGKSBwcmludGYoIiVkIiwgZGF0YTFbaV0pOwoJfQoKCXJldHVybiAwOwp9CgppbnQgZGlnaXQoaW50IG4pIHsKCWludCB4ID0gMTsKCXdoaWxlICgobiAvPSAxMCkgPiAwKSArK3g7CglyZXR1cm4geDsKfQoKdm9pZCBjYXRfZGF0YShpbnQqIGRhdGExLCBjb25zdCBpbnQqIGRhdGEyLCBpbnQgbGVuMikgewoJZm9yIChpbnQgaSA9IDAsIGogPSAwOyBpIDwgNzsgaSsrKSB7CgkJaWYgKGRhdGExW2ldPT0gREVGICYmIGogPCBsZW4yKSB7CgkJCWRhdGExW2ldID0gZGF0YTJbal07CgkJCWorKzsKCQl9Cgl9Cn0KKi8=