用scanf填充C中的巨大数组

用scanf填充C中的巨大数组,c,arrays,input,scanf,populate,C,Arrays,Input,Scanf,Populate,假设我的程序必须接收2个输入: 第一个对应于数组的大小, 第二个输入对应于数组的元素,由一个空格分隔 i、 e.(投入): 四, 1234 所以我必须用1,2,3,4作为元素填充一个大小为n=4的数组。 现在,我通常的做法是: int *vector=malloc(n*sizeof(int)); for(int i=0; i<n; i++){ scanf("%d", &vector[i]); } int*vector=malloc(n*sizeof(int)); 对于

假设我的程序必须接收2个输入: 第一个对应于数组的大小, 第二个输入对应于数组的元素,由一个空格分隔

i、 e.(投入):

  • 四,
  • 1234
所以我必须用1,2,3,4作为元素填充一个大小为n=4的数组。 现在,我通常的做法是:

int *vector=malloc(n*sizeof(int));
for(int i=0; i<n; i++){
    scanf("%d", &vector[i]);
}
int*vector=malloc(n*sizeof(int));

对于(int i=0;i忽略性能不如预期的事实,您没有考虑以下事项:

<>在C和C++中,你有这些要求

这意味着:

你的代码

 for(int i=0; i<n; i++){
    scanf("%d", &vector[i]);
}

for(int i=0;iYour i是一个最大值为32767的整数,“根本不起作用”不是一个问题。请通过“卡在无限循环中”来修复此问题你的意思是for循环超出了n吗?也就是说,它卡在循环中的什么地方,你能扩展一下你是怎么知道的吗?@psionix-什么让你认为一个整数的最大值是32767????你能从一个文件中读取所有这些输入吗?如果它是大量的值,用户输入将是乏味的。所以,你是说我应该使用长整型或无符号整型,我的意思是,如果在0到100万之间进行for循环,但计数器只保存1000个值,那么循环将是无限的……因此,需要读取的输入数量必须适当地传递给数据类型……如果任何数据>32000,则对计数器和数组使用long或unsigned long。
 for(int i=0; i<n; i++){
    scanf("%d", &vector[i]);
}