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

问题描述:

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

我试图去实现它做这种方式:

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

你说你要参加一个整数,把它变成一个串? – 2010-05-26 20:04:46

+1

编译器需要专门研究将int传递给scanf而不是int *的情况,并输出“NO。你不想这样做。糟糕” - 好像每次有人在SO上使用scanf时,他们会这个错误。它应该是'scanf(“%d”,&x);'或者你将尝试写一个int来存储'x'碰巧存储的位置 – 2010-05-26 20:07:47

你可以只是读它作为一个字符串%s转换为字符数组。

在这一点上,你有一个字符中的每个数字。

char只是一个int值。所以,你也可以在任何适用的转型,您在阅读文字

您可以将每个字符的数字转换成它的int值,然后你可以遍历字符串中的每个字符和做这样的事情:

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

我的猜测是OP的问题之一是确定要分配的内存量。 – 2010-05-26 20:12:35

奇迹般地这样,你就需要在INT阅读并打破了数字自己,或阅读它作为一个字符串,所以你可以访问一个个字符分别

其他人都具有相当不错的答案,你想要指出你的代码真的在做什么---

numbers = malloc(x); 

在这里,您已阅读用户的输入并在堆中分配了x个字节的数组。数字指向那个记忆。这是你进入该阵列的唯一途径。

numbers = x; 

然后,您已将数字指定给整数x。您现在已经失去了malloc分配的内存跟踪,无法使用free()将其删除。

两个快速招数:

整数到字符串:

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; 
}