Присвоение каждой цифры типа int массиву int - PullRequest
0 голосов
/ 27 мая 2010

Можно ли получить целое число, используя scanf и присвоив каждую цифру массиву int?

Я пытаюсь добиться этого, делая это так:

int numbers[];
puts("Enter number");
int x;
scanf("%d",x);
numbers = malloc(x);
numbers = x;

Ответы [ 4 ]

1 голос
/ 27 мая 2010

Два быстрых трюка:

Целое число в строку:

int N;
char buf[10];
scanf("%d",&N);
sprintf(buf,"%d",N);

Целое число в массиве:

int N,i,
    buf[10],
    Dig;
scanf("%d",&N);
Dig = log10(N);
for(i = Dig; N ; i--){
   buf[i] = N % 10;
   N /= 10;
}
0 голосов
/ 27 мая 2010

Не так волшебно, вам нужно прочитать в int и разбить цифры самостоятельно, или прочитать их как строку, чтобы вы могли получить доступ к каждому символу индивидуально

0 голосов
/ 27 мая 2010

У всех есть хорошие ответы на ваши вопросы, просто хочу указать, что ваш код действительно делает ---

numbers = malloc(x);

Здесь вы прочитали входные данные пользователя и разместили массив из х байтов в куче. Числа указывают на эту память. Это ваш единственный способ получить доступ к этому массиву.

numbers = x;

Тогда вы присвоили числа целому числу x. Вы потеряли память, выделенную malloc, и не можете удалить ее с помощью free ().

0 голосов
/ 27 мая 2010

Вы можете просто прочитать его как строку% s в массив символов.

В этот момент у вас есть каждая цифра в символе.

Char - это просто значение типа int. Таким образом, после этого вы можете применить любое преобразование к символу, который читаете.

Вы можете преобразовать каждую символьную цифру в ее значение int, а затем вы можете перебрать каждый символ в строке и сделать что-то вроде этого:

myInts[i] = charBuffer[i] - '0'; /* where i = 0.. string length -1 */
...