我需要将大小为4的整数数组转换为int
。我已经看到int
数组看起来像{1,2,3,4}的解决方案变成了1234,我也看到了类似{10,20,30}的数组会变成102030.但是,我的问题是我有一个看起来像{0,6,88,54}的数组,我之前提到的解决方案只适用于int
s的数组相同的类型{例如,所有一位数或全部两位数}。
我该怎么做才能解决这个问题?
{0,6,88,54}数组的预期输出为68854。
Examples中间的零输出应该保留它们,即{6,0,0,8}将是6008但默认情况下{0,6,0,0,8}仍然是{以6008
形式{1}}我在int
中需要这个,但我不介意有一个字符串中间。
答案 0 :(得分:2)
你可以这样做:
int res = 0;
int nums[4] = {1, 4, 3, 2}
int i = 0, temp;
for (i = 0; i < 4; ++i) {
temp = nums[i];
do {
res *= 10;
} while ((temp /= 10) > 0);
res += nums[i];
}
答案 1 :(得分:2)
一个简洁的解决方案可能是打印到字符串然后将字符串转换回整数
char dummy[100];
int answer;
int input[4];
....
sprintf(dummy,"%d%d%d%d",input[0],input[1],input[2],input[3]);
answer=atoi(dummy);
sprintf
将整数打印成字符串
atoi
将字符串转换为整数,并且应该能够在前面处理0
。
完整计划
#include <stdio.h>
#include <stdlib.h>
int main()
{
char dummy[100];
int answer;
int input[4]={3,4,0,345};
sprintf(dummy,"%d%d%d%d",input[0],input[1],input[2],input[3]);
answer=atoi(dummy);
printf("%d\n",answer);
return 0;
}
答案 2 :(得分:2)
这个解决方案怎么样?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int arr[] = {0, 6, 88, 54};
char buffer[1000] = { 0 };
for(size_t i = 0; i < sizeof arr / sizeof *arr; ++i)
sprintf(buffer, "%s%d", buffer, arr[i]);
int val = strtol(buffer, NULL, 10);
printf("%d\n", val);
return 0;
}
int打印608854
。