2017-01-12 85 views
0

如何将两个数字从数组转换为一个整数转换为新数组?C将两个数字转换为一个整数

例如:1245678933658到[12,45,67,89,33,65,80]如果其为奇数,则将0加到最后。

我的尝试是:

new_array[i]=digits[i]*10+digits[i++]*10/10; 
+0

如果原始数字是ASCII字符,请不要忘记您必须减去'0';即'0' - '0'= 0,'1' - '0'= 1等。 –

+5

你的例子是经典的UB。 – 0andriy

+0

'i ++'在原始值传回之后递增'i' *。我假设你的意思是'++ i'。但是对于增加索引的位置和使用位置,您应该更加明确,以免依赖任何[顺序点](https://en.wikipedia.org/wiki/Sequence_point)假设。 – chrisaycock

回答

0

它有没有成为“一个衬里”,或将一个更可读的代码也被允许?请尝试以下操作:

const char* digits = "12456789336581"; 
int digitIndex=0; 
int numbers[100]; 
int currentNumberIndex = 0; 
int currentNumber = 0; 
while (digits[digitIndex]) { 
    currentNumber *=10; 
    currentNumber += digits[digitIndex] - '0'; 
    digitIndex++; 

    if ((digitIndex)%2 == 0) // two digits handled? 
    { 
     numbers[currentNumberIndex++] = currentNumber; 
     currentNumber = 0; 
    } 
} 

// handle the case that last number contained just one digit: 
if (digitIndex%2) { 
    currentNumber *=10; 
    numbers[currentNumberIndex++] = currentNumber; 
} 

for (int i=0; i < currentNumberIndex; i++) 
    printf("number[%d]: %d\n", i, numbers[i]); 
+0

Thx !!适用于我 –

+2

注意:'while(isdigit((unsigned char)digits [digitIndex]))'是一个更具防御性的编码。 – chux

相关问题