6 つの整数の配列を単一の整数に変換するにはどうすればよいですか。私がやりたいことの例を以下に示します。
配列:{0, 1, 2, 3, 4, 5, 6}
整数: 123456
ありがとうございました!
これを試して:
int i, k = 0;
for (i = 0; i < n; i++)
k = 10 * k + a[i];
ここn
で、配列の長さです。ただし、これは、配列が十分に短い場合に当てはまります。そうしないと、int
オーバーフローが発生します。
ここに私が作った関数があります
int array_to_num(int arr[],int n){
char str[6][3];
int i;
char number[13] = {'\n'};
for(i=0;i<n;i++) sprintf(str[i],"%d",arr[i]);
for(i=0;i<n;i++)strcat(number,str[i]);
i = atoi(number);
return i;
}
whereは、数字を保持できる要素があることをstr[6][3]
意味します。必要に応じて変更してください。また、関数に入れる配列のサイズです。次のように使用します。6
2
n
int num[6] = {13,20,6,4,3,55};
int real_num;
real_num = array_to_num(num,6);
real_num
今は132064355
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv){
int n;
char buff[100];
sprintf(buff,"%d%d%d%d%d%d%d", 0, 1,2, 3, 4, 5, 6);
n = atoi(buff);
printf("the number is %d",n);
}
別のバージョン
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv){
int n;
int i;
char buff[100];
int x[]={0,1,2,3,4,5,6};
for (i=0; i<7; i++) {
sprintf(&buff[i],"%d",x[i]);
}
n = atoi(buff);
printf("the number is %d",n);
}