25

整数をCの文字配列に変換したい。

入力:

int num = 221234;

結果は次のようになります。

char arr[6];
arr[0] = '2';
arr[1] = '2';
arr[2] = '1';
arr[3] = '2';
arr[4] = '3';
arr[5] = '4';

これどうやってするの?

4

5 に答える 5

23

この関数を使用してlog10桁数を決定し、次のようにします。

char * toArray(int number)
{
    int n = log10(number) + 1;
    int i;
    char *numberArray = calloc(n, sizeof(char));
    for (i = n-1; i >= 0; --i, number /= 10)
    {
        numberArray[i] = (number % 10) + '0';
    }
    return numberArray;
}

または他のオプションはsprintf(yourCharArray,"%ld", intNumber);

于 2013-01-28T15:06:57.517 に答える
23

' sprintf 'は正常に機能します。最初の引数が文字へのポインターである場合(文字へのポインターは'c'の配列です)、すべての数字と終了に十分なスペースがあることを確認する必要があります。 '\0'。たとえば、整数が32ビットを使用する場合、最大10桁の10進数になります。したがって、コードは次のようになります。

int i;
char s[11]; 
...
sprintf(s,"%ld", i);
于 2013-01-28T15:22:37.880 に答える
3

簡単な方法は、を使用することですsprintf。他の人が提案していることは知っていますがitoa、a)標準ライブラリの一部ではなく、b)そうでない sprintfフォーマットオプションを提供します。itoa

于 2013-01-28T15:06:11.547 に答える
1

ここに示すように、itoaを使用します。

char buf[5];
// Convert 123 to string [buf]
itoa(123, buf, 10);

buf文書化したとおり、文字列配列になります。バッファのサイズを増やす必要があるかもしれません。

于 2013-01-28T15:04:53.903 に答える
0

itoaの使用を試してみてください。もう1つの方法は、sprintfを使用することです。

于 2013-01-28T15:04:37.937 に答える