2017-02-16 15 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:整数のサイズが指定されていません...ありがとうtho – erickimme

0

私はCプログラマではないので、特定のコードを与えることはできませんが、文字列変換(Googleはsprintf()を試しています)、2)整数/文字列の長さを配列に代入します。私はこのような何かを終わらせるだろう:

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

おそらく、配列を返す関数でそれをまとめていいですか?

編集:他の回答は無視してください。

+0

あなたは人々がそれを無視したい場合は、あなたの答えを削除することができます。 – bejado

+1

私はそれがまだ役に立つかもしれないことを意味します。私は間違いなく、質問に対する最適以下の答えから多くを学んだ。ちょうど異なる可能性と方法について説明します。 – jylny

+0

@jylynあなたがそれを残そうとするなら、それを無視するように人々に言うべきではなく、単にそれ自体のために立つことを許すべきです。 – bejado

1

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のオプション機能です。

関連する問題