将int的每个数字分配给int数组

时间:2010-05-26 20:02:24

标签: c arrays scanf

是否可以使用scanf检索整数并将每个数字分配给一个int数组?

我正试图通过这种方式实现它:

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

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

您可以将其作为字符串%s读入char数组。

此时,您将每个数字都放在一个字符中。

char只是一个int值。因此,您可以在此之后将任何转换应用于您读入的角色。

您可以将每个char数字转换为其int值,然后您可以迭代字符串中的每个char并执行以下操作:

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

答案 2 :(得分:0)

不奇怪,你需要读取int并自己分解数字,或者将其作为字符串读取,以便你可以单独访问每个字符

答案 3 :(得分:0)

其他人对你想要的东西有很好的答案,只想指出你的代码到底在做什么---

numbers = malloc(x);

在这里,您已经读入了用户的输入并在堆上分配了一个x字节数组。数字指向那个记忆。这是你到达那个阵列的唯一方法。

numbers = x;

然后你已经为整数x分配了数字。您现在已经忘记了malloc分配的内存,无法使用free()删除它。