C:使用整数扫描数组

时间:2014-06-15 19:11:06

标签: c arrays scanf

如何扫描数组的值?像:

Input: 3 4 5 6 7

What I want:- ar[5] = {3, 4, 5, 6, 7};

这听起来很容易,但我被困在那里。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:5)

当你一个接一个地阅读五个整数时,你可以阅读它:

for (i = 0; i < 5; i++)
  scanf("%d", &array[i]);

所以你可以正常输入3 4 5 6 7

答案 1 :(得分:1)

以上都是有效的答案,如果您不知道有多少元素,也可以使用动态分配的数组。有很多不同的版本,例如每个新元素将数组大小增加1或者在开始时输入大小......

#include<stdio.h>
#include<stdlib.h>

int main(){
int *ar, i, j, h;

scanf("%d", &i); // Input the size of an array

ar = (int*)malloc(sizeof(int)*i); // allocate the memory for your array

for(j = 0; j < i; j++){
    scanf("%d", &h);
    *(ar+j) = h;
}

for(j = 0; j < i; j++) printf("%d\n", ar[j]);

free(ar);
return 0;
}

以下是使用realloc();每个新元素将大小增加1的示例。对于此示例,我们假设您输入数字,直到输入-1。

#include<stdio.h>
#include<stdlib.h>

int main(){
int *ar, i, s = 1;

ar = (int*)malloc(sizeof(int));

do{
scanf("%d", &i);
if(i == -1) break;

ar[s-1] = i;
realloc(ar, ++s);
}while(1);

for(i = 0; i < s - 1; i++) printf("%d\n", ar[i]);

free(ar);

return 0;
}

动态分配数组非常重要的一点是,在退出程序之前,需要使用free();释放内存。

答案 2 :(得分:0)

您需要在之前声明数组大小(推荐使用#define),这意味着您需要知道之前输入的大小。

#define LEN 5
void main()
{
    int arr[LEN];
    for (i =0; i < LEN; i++)
        scanf("%d", &arr[i]);
}

如果你想动态地定义一个数组,你必须使用指针(使用malloc和realloc)。

void main()
{
    int* arr = (int*) malloc(0);
    int size = 0;
    int val;
    for (size = 0; scanf("%d", &val) != EOF; size++)
    {
         arr = (int*) realloc(arr, size + 1);
         arr[size] = val;
    } 
    free(arr);
}