是否可以使用scanf檢索整數並將每個數字分配給int數組?將int的每個數字分配給int數組
我試圖去實現它做這種方式:
int numbers[];
puts("Enter number");
int x;
scanf("%d",x);
numbers = malloc(x);
numbers = x;
是否可以使用scanf檢索整數並將每個數字分配給int數組?將int的每個數字分配給int數組
我試圖去實現它做這種方式:
int numbers[];
puts("Enter number");
int x;
scanf("%d",x);
numbers = malloc(x);
numbers = x;
你可以只是讀它作爲一個字符串%s轉換爲字符數組。
在這一點上,你有一個字符中的每個數字。
char只是一個int值。所以,你也可以在任何適用的轉型,您在閱讀文字
您可以將每個字符的數字轉換成它的int值,然後你可以遍歷字符串中的每個字符和做這樣的事情:
myInts[i] = charBuffer[i] - '0'; /* where i = 0.. string length -1 */
我的猜測是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;
}
你說你要參加一個整數,把它變成一個串? – 2010-05-26 20:04:46
編譯器需要專門研究將int傳遞給scanf而不是int *的情況,並輸出「NO。你不想這樣做。糟糕」 - 好像每次有人在SO上使用scanf時,他們會這個錯誤。它應該是'scanf(「%d」,&x);'或者你將嘗試寫一個int來存儲'x'碰巧存儲的位置 – 2010-05-26 20:07:47