簡體   English   中英

如何在不使用字符串的情況下將整數轉換為數字數組?

[英]How do I turn an integer into an array of digits without using strings?

例如,取123並將其放入一個數組,其中是[3] = {1,2,3}?

不將其轉換為字符串並迭代它。

您可以使用整數除法和模數來獲取數字的十進制數字。

 //Pseudo code
 int[MAX_SIZE] result;
 int index = 0;
 while (workingNumber > 0)
 { 
     digit = workingNumber % 10;
     result[index] = digit;
     workingNumber = workingNumber / 10; //Must be integer division
     index++;
 } 
#include <math.h>

...

int number = 5841;
int size = log10(number) + 1;
int arr[size];
int i = size;
while(i >= 0)
{
    arr[--i] = number % 10;
    number /= 10;
}

首先,請記住,在C中,“char of char”和“string”之間唯一真正的區別是字符串,你將一個NUL-terminator放在char數組的末尾。

假設你想(例如)創建一個int(或long,或除char之外的其他東西)的數組,你通常會在除以10時取余數,並通過加'0'將其轉換為數字。 然后將數字除以10並重復直到它減小到零。 這會創建從最小到最重要的數字,因此您通常將它們存放在數組的末尾並向后開始向后工作。

#include <stdio.h>
#include <math.h>

#define LEN 3

int main(int argc,char* argv[])
{
  int i = 123;
  int a[LEN];
  int digit;
  int idx = log10(i);

  do {
    digit = i % 10;
    i /= 10;
    a[idx--] = digit;
  } while (i != 0);

  printf("a: { %d, %d, %d }\n", a[0], a[1], a[2]);

  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM