2017-02-16 48 views
2

如何將整數值轉換爲整數數組格式?將整數轉換爲整數數組c

例如:

int answer = 140; 

和預期值,我希望得到的是:

int arr_answer[] = { 1, 4, 0}; 
+0

你知道「答案」中有多少位數嗎? – bejado

+0

你是說你想用所需的輸出生成源代碼:int arr_answer [] = {1,4,0​​};'?請具體說明。 –

回答

1

如果你知道數字的時間提前數(在本例中3),你可以像這樣做:

#include <stdio.h> 

int main() 
{ 
    const int numDigits = 3; 
    int answer = 140; 
    int digits[numDigits]; 

    int i = numDigits - 1; 
    while (answer > 0) 
    { 
     int digit = answer % 10; 
     answer /= 10; 
     digits[i] = digit; 
     printf("digits[%d] = %d\n", i, digits[i]); 
     i--; 
    } 

    return 0; 
} 

輸出:

digits[2] = 0 
digits[1] = 4 
digits[0] = 1 
+0

'0 4 1'是錯誤的。修復你的代碼。它應該是'1 4 0' – Michi

+0

@Michi它沒有錯,它是反向填充數組。 – bejado

+0

@bejado:沒有給出整數的大小......謝謝你 – erickimme

0

我不是C程序員,所以我不能給出具體的代碼,但我會嘗試1)整數字符串轉換(谷歌說,嘗試sprintf()),2)運行for循環爲你的整數/字符串的長度和分配給一個數組。我最終會做這樣的事情:

integer_String = convertToString(integer) 
for (integer_String.length()) {assign to array} 

大概是不錯的包裹起來在返回數組的功能。

編輯:無視哈哈其他答案是更好的方式。

+0

如果你想讓人們無視它,你可以刪除你的答案。 – bejado

+1

我的意思是,它可能仍然有用。我肯定從問題的次優答案中學到很多東西;只是關於不同的可能性和方法。 – jylny

+0

@jylyn我同意,如果你想離開它,那麼你不應該讓人們忽視它,只是讓它自己站起來。 – bejado

1

一種選擇是計數數字和使用variable length array

#include <stdio.h> 

int main(void){ 
    int ans = 140; 
    int x = ans; 
    size_t i, size = 0; 

    while (x) { 
     x=x/10; 
     size++; 
    } 

    int arr_answer[size]; 

    for (i = size - 1, x = ans ; x ; x = x/10, i--) { 
     arr_answer[i] = x % 10; 
    } 

    for (i=0 ; i < size ; i++) { 
     printf("%d ", arr_answer[i]); 
    } 
} 

顯然,如果你可以使用固定大小的數組,它是足夠大的,你不需要計算size,因此避免第一個循環。 但這可能是唯一的一個準確大小的陣列。或者,如果數字的位數可能很大(如果您不需要使用數組),則還可以使用malloc()來分配一塊內存(並且您還需要以不同方式存儲它們) - 一個int可以保持有限的數值範圍)。

從C99開始可用的VLA是C11中的可選功能。