【问题标题】:How to fill an array, that is defined in a function as parameter, through user input via main function?如何通过主函数的用户输入填充在函数中定义为参数的数组?
【发布时间】:2018-07-15 12:40:21
【问题描述】:

我创建了一个程序来计算 4 个数组元素的总和。 是否可以在程序执行过程中提示用户手动填充数组元素,然后显示总和?我可以在不使用函数的情况下做到这一点,但是在使用函数时会卡住。现在还可以吗?

如果我在主函数中插入一个 for 循环,就在变量初始化之后,

int data[];
int total;
int size = sizeof(data) / sizeof(data[0]);

printf("Enter array elements: ");
for(int i=0; i<size; i++) {
    scanf("%d", &data[i]);
}

编译器抱怨:

error: definition of the variable with array type needs an explicit size or an initializer
    int data[];
        ^
1 error generated.

我的程序如下所示:

#include <stdio.h>

int sum(int data[], int size)
{
    int sum = 0;
    int i;

    for (i = 0; i < size; i++)
        sum += data[i];

    return sum;
}

int main()
{

    int data[] = { 1, 2, 3, 4 }; // I want user input here
    int total;
    int size = sizeof(data) / sizeof(data[0]);

    total = sum(data, size);

    printf("Sum is: %d\n", total);
    return 0;
}

【问题讨论】:

  • “如果我在这里插入一个 for 循环,编译器会抱怨数据(存储用户输入的数组)未初始化。”这里是什么地方”?您介意向我们展示有问题的程序吗?
  • 不显示有效的代码,显示无效的代码。不要描述你的代码,而是展示它。
  • 有时间我会补充答案的。
  • @SudarshanKakoty.:首先检查我的这个答案....尝试运行此代码...它做任何你想做的事。该程序基本上要求输入数字,然后您逐渐输入,然后按“退出”或q退出...stackoverflow.com/a/48528760/3796113...
  • 我有点忙和累 - 如果我明天回来看到这个没有答案,如果其他链接的答案没有帮助(这不太可能)我会编辑答案以满足您的需求要求。在那之前..一切顺利

标签: c arrays function user-input


【解决方案1】:

错误:数组类型的变量的定义需要显式 大小或初始化器 整数数据[];

编译器清楚,你不能这样做:

int data[];

需要类似的东西:

int data[SIZE];

【讨论】:

  • 我知道错误的原因,但根据条件,大小应根据用户将作为输入提供给 STDIN 的整数数量自动处理。 (不能预先定义)
猜你喜欢
  • 1970-01-01
  • 2020-12-30
  • 2016-01-04
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 2019-06-19
  • 2022-09-23
相关资源
最近更新 更多