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
或您输入的值不是整数时,此函数将停止向数组中添加元素。
我保存在一个静态分配的数组中,我不知道元素的输入会有多少,我只知道它们会比我为数组保留的少。使用此输入,我无法保存数组中的最后一个元素。
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
或您输入的值不是整数时,此函数将停止向数组中添加元素。