C调用函数 -

时间:2015-01-30 13:19:29

标签: c function struct

我有一个简单的代码,声明了函数(我假设正确),但我没有得到scanf()的提示。我有void返回的函数,并通过值传递它们。我需要函数retrieve来提示scanf,以便输入数据。

由于

#include <stdio.h>
#define Len 10

void retrieve(void);
void update(void);
int main(void)
{
    int i;
    float A[Len];
    float B[Len];
    float C[Len];

printf("Give 10 real numbers for each array, A and B.\n");
void retrieve();
void update();
//Print each newly created value from table C.
printf("\nArray C has now:\n");
        for (i = 1; i <= Len; i++)
        {
            printf("Position: %d || Value: %.2lf\n",i,C[i]);
        }
}
void retrieve (void) // Get the values for array A and B.
{
        for (i = 1; i <= Len; i++)
        {
            scanf("%lf", &A[i]);
        }

        for (i = 1; i <= Len; i++)
        {
            scanf("%lf", &B[i]);
        }
}
void update (void) //Add the items from array A and B into C.
{
    for (i = 1; i <= Len; i++)
        {
            C[i]=A[i]+B[i];
        }
}

2 个答案:

答案 0 :(得分:3)

请注意,当您认为在此处调用您的函数时:

void retrieve();
void update();

你实际上只是重新宣布原型。将其更改为:

retrieve();
update();

为了实际调用这些函数。

您还需要使数组全局化或将它们作为参数传递给函数。

答案 1 :(得分:1)

您的代码中存在多个问题

  • 您没有将数组A,B,C传递给retreive / update函数
  • 你索引他们错了。你必须从i = 0开始,而不是1。
  • 您在主要功能中覆盖update() / retreive()。你必须在它之前调用它们(所以省略void)。

这是一个工作示例

#include <stdio.h>
#define Len 10

static void retrieve (float* A, float* B);
static void update (const float* A, const float* B, float* C);
int main(void)
{
    int i;
    float A[Len];
    float B[Len];
    float C[Len];

    printf("Give 10 real numbers for each array, A and B.\n");
    retrieve(A, B);
    update(A, B ,C);
    //Print each newly created value from table C.
    printf("\nArray C has now:\n");
    for (i = 1; i <= Len; i++)
    {
            printf("Position: %d || Value: %.2lf\n",i,C[i]);
    }
}

static void retrieve (float* A, float* B) // Get the values for array A and B.
{
    int i;
    for (i = 0; i < Len; i++)
    {
        scanf("%lf", &A[i]);
    }

    for (i = 0; i < Len; i++)
    {
        scanf("%lf", &B[i]);
    }
}

static void update (const float* A, const float* B, float* C) //Add the items from array A and B into C.
{
    int i;
    for (i = 0; i < Len; i++)
    {
        C[i]=A[i]+B[i];
    }
}