2010-05-26 4 views
0

Возможно ли получить целое число с помощью scanf и присвоить каждую цифру массиву int?Назначение каждой цифры int массиву int

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

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

вы говорите, вы хотите взять в целое число и превратить его в строка? –

+1

Компиляторы должны специально улавливать случай, когда люди передают int scanf вместо int *, и выводят «NO. Вы НЕ хотите этого делать. BAD» - кажется, каждый раз, когда кто-то использует scanf на SO, они делают эта ошибка. Это должно быть 'scanf ("% d ", &x);' или вы собираетесь попытаться записать int в любое место памяти. 'X' произойдет. –

ответ

0

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

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

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

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

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

. Моя догадка - одна из проблем OP - определить объем памяти для выделения , – 2010-05-26 20:12:35

0

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

0

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

numbers = malloc(x); 

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

numbers = x; 

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

1

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

Целые нанизывать:

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; 
} 
Смежные вопросы