說,我想從用戶那裏得到幾個整數輸入。在C中使用未知數量輸入的數組?
它可能是10,100,1000(或)10000個輸入,完全取決於用戶。
我想將它們存儲在數組中,並根據需要引用任何第i個輸入。
使用數組可能嗎?
說,我想從用戶那裏得到幾個整數輸入。在C中使用未知數量輸入的數組?
它可能是10,100,1000(或)10000個輸入,完全取決於用戶。
我想將它們存儲在數組中,並根據需要引用任何第i個輸入。
使用數組可能嗎?
試試這個:
#include <stdio.h>
#include <stdlib.h>
int readNum()
{
int c;
int buffer = 0;
while ((c = getchar()) != EOF && c != '\n' && c >= '0' && c <= '9')
{
buffer = (buffer * 10) + (c - '0');
}
return buffer;
}
int *readNumsToArray()
{
size_t maxSize = 64;
size_t i = 0;
int *intArr = malloc(sizeof(*intArr) * maxSize);
int buffer;
while ((buffer = readNum()) != 0)
{
intArr[i++] = buffer;
if (i == maxSize)
{
maxSize *= 2;
intArr = realloc(intArr, sizeof *intArr * maxSize);
if (intArr == NULL) break;
}
}
if (buffer == 0)
intArr[i] = buffer;
return intArr;
}
int main()
{
int *nums = readNumsToArray();
size_t i = 0;
while(nums[i] != 0)
{
printf("%d\n", nums[i++]);
}
return 0;
}
這個程序接受數字,直到0。 個人數字閱讀,直到一個「\ n」字符。 如果你想要第i個元素,你可以只輸入nums [i]。
您可以使用malloc
函數。 如果希望動態地分配一個數組,以下代碼可被用於:
int * array = malloc(10 * sizeof(int));
此計算該10點的整數中的存儲器佔用的字節數,然後請求從malloc的許多個字節,結果分配給一個指針命名array
當程序不再需要動態數組,它應該叫自由返回佔用給自由存儲內存:
free(array);
來源:Wikipedia
如果我想得到列表中第7個元素的值,該怎麼辦? –
@SathyamoorthyR'array [6]'(6因爲在C中,數組索引從0開始) –
什麼信號輸入的結束?我的意思是,計算機無法知道輸入已經結束。 –
當然這是可能的。只需創建一個10000個元素的數組。這符合您的問題中指定的要求。但我認爲你實際上是在試圖要求別的東西。如果是這樣,請澄清您的問題,以更清楚地描述您的輸入(例如,用戶如何表示不再有輸入)以及任何其他問題的限制。 – kaylum
好的,更清晰一點。說,我會在開始時給出輸入的數量。 然後, 我想聲明指定'沒有。的投入'? 因爲,我想要去任何第i個元素,我認爲Array是選擇! 我不希望這是可能的指針? –