说,我想从用户那里获得几个整数输入。
可能是10,100,1000(或)10000个输入完全取决于用户。
我想将它们存储在数组中并根据需要引用任何第i个输入。
是否可以使用数组?
答案 0 :(得分:0)
试试这个:
#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]。
答案 1 :(得分:0)
您可以使用malloc
功能。
如果您希望动态分配数组,可以使用以下代码:
int * array = malloc(10 * sizeof(int));
这计算十个整数在内存中占用的字节数,然后从malloc请求多个字节并将结果分配给名为array
的指针
当程序不再需要动态数组时,它应该调用free来将它占用的内存返回到免费存储:
free(array);
来源:Wikipedia