C - 将元素保存到数组

C - Saving an element to an array

我保存在一个静态分配的数组中,我不知道元素的输入会有多少,我只知道它们会比我为数组保留的少。使用此输入,我无法保存数组中的最后一个元素。

int nactiCisla (int delky[], int *cnt) 
{
    int x;
    int q = 0;
        
    printf("Delky nosniku: \n");
    
        while  (( scanf("%d", &x) ) == 1) 
        {
            
                delky[q] = x;
                q++;
            
        }
    
    return q;
}

我不确定你的问题是什么,但这就是你要找的吗?

int nactiCisla (int delky[], int *cnt) 
{
    printf("Delky nosniku: \n");
    for ( *cnt = 0; scanf("%d", &delky[q]) == 1; *cnt++ );
    return *cnt;
}

首先,您需要确保添加的元素数量不超过数组允许的数量。其次,您可以通过接受要插入的第一个位置来使函数更通用(例如, begin

int nactiCisla (int delky[], int begin, int end) 
{
    int x;
    int current_pos = begin;
    printf("Delky nosniku: \n");
    for(;current_pos < end && ( scanf("%d", &x) ) == 1; current_pos++) 
        delky[current_pos] = x;
    
    return current_pos;
}

这样您就可以选择添加元素的确切数组部分。例如,要仅将两个元素添加到数组的第三个和第四个位置,您可以像这样调用该函数 nactiCisla (delky, 3, 5)。我假设 begin 参数大于或等于零,并且 end 参数最多是数组的大小。

当当前数组位置大于您作为参数传递的 end 或您输入的值不是整数时,此函数将停止向数组中添加元素。