2010-05-26 85 views
0

是否可以使用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

回答

0

你可以只是讀它作爲一個字符串%s轉換爲字符數組。

在這一點上,你有一個字符中的每個數字。

char只是一個int值。所以,你也可以在任何適用的轉型,您在閱讀文字

您可以將每個字符的數字轉換成它的int值,然後你可以遍歷字符串中的每個字符和做這樣的事情:

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

我的猜測是OP的問題之一是確定要分配的內存量。 – 2010-05-26 20:12:35

0

奇蹟般地這樣,你就需要在INT閱讀並打破了數字自己,或閱讀它作爲一個字符串,所以你可以訪問一個個字符分別

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