如何將兩個數字從數組轉換爲一個整數轉換爲新數組?C將兩個數字轉換爲一個整數
例如:1245678933658到[12,45,67,89,33,65,80]如果其爲奇數,則將0加到最後。
我的嘗試是:
new_array[i]=digits[i]*10+digits[i++]*10/10;
如何將兩個數字從數組轉換爲一個整數轉換爲新數組?C將兩個數字轉換爲一個整數
例如:1245678933658到[12,45,67,89,33,65,80]如果其爲奇數,則將0加到最後。
我的嘗試是:
new_array[i]=digits[i]*10+digits[i++]*10/10;
它有沒有成爲「一個襯裏」,或將一個更可讀的代碼也被允許?請嘗試以下操作:
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]);
Thx !!適用於我 –
注意:'while(isdigit((unsigned char)digits [digitIndex]))'是一個更具防禦性的編碼。 – chux
如果原始數字是ASCII字符,請不要忘記您必須減去'0';即'0' - '0'= 0,'1' - '0'= 1等。 –
你的例子是經典的UB。 – 0andriy
'i ++'在原始值傳回之後遞增'i' *。我假設你的意思是'++ i'。但是對於增加索引的位置和使用位置,您應該更加明確,以免依賴任何[順序點](https://en.wikipedia.org/wiki/Sequence_point)假設。 – chrisaycock