c - 将我的数组转换为函数并创建第二个函数来打印它

标签 c arrays function

我正在尝试创建一个有两个选项的程序:查看和计算。现在我试图弄清楚如何将我的数组转换为函数,以便我可以多次进出来存储值。我还想将其视为一个可以多次查看值的函数。

我已经设法让计算部分在我的主程序中工作,现在我需要将它变成一个函数。其次,我如何创建第二个函数来查看它?

我的代码有点乱,请耐心等待。

#include <stdio.h>
#define LENGTH 10

int enterMeasurements();

int main(void)
{
char input;
int nrMeasurements=0;
int arrayTable[LENGTH] = {0};
//main menu
do
{
    char input;
    printf("\nMeasurement tool 1.0\n");
    printf("V for (View)\n");
    printf("E for (Enter Values)\n");
    printf("C for (Compute Values)\n");
    printf("R for (Reset Values)\n");
    printf("Q for (Quit)\n");
    printf("\nEnter input: ");
    scanf(" %c", &input);

    if(input == 'v' || input == 'V')
    {
    // function to print array values
    printf("[      ]\n");
    }
    else if(input == 'e' || input == 'E')
    {
    // enter values here
        nrMeasurements = enterMeasurements(arrayTable,nrMeasurements); // my function for entering values
    }
    else if (input == 'c' || input == 'C')
    {
    // enter function to calc min, max and avg and prints it.
    printf("[   min max avg   ]\n");
    }
    else if (input == 'r' || input == 'R')
    {
    // enter function that erase the entire array.
    printf("[   erase array   ]\n");
    }
}
while (input !='q' && input != 'Q');
return 0;
}

int enterMeasurements()
{
int enterMeasurements(int arrayTable[], int nrMeasurements)
{
int i;

for (i = 0; i < LENGTH; i++)
{
    printf("Enter Measurement #%i (or 0): ", i+1);
    scanf("%d", &arrayTable[i]);


    if (arrayTable[i] == 0 )
        break;
}


return i;


}

最佳答案

为了帮助您入门(您确实应该 read a beginners book on the subject ),我将向您展示 printArray 函数。

首先,printArray 函数需要知道要打印的实际数组。它还需要知道数组中元素的数量。这可以通过两种方式完成:全局变量(没有人真正推荐)或使用函数参数

您首先需要告诉编译器该函数需要参数:

void printArray(int *array, size_t numElements)

上面一行告诉编译器 printArray 函数有两个参数:一个称为 array ,是一个指向 int 的指针(数组在传递给函数时“衰减”为指向其第一个元素的指针),以及一个名为 numElements 且类型为 size_t 的参数(对于大小而言,这是一个很好的类型)以及元素的数量和类似的东西)。使用 void 关键字声明该函数不返回任何内容。

声明的参数可以像函数范围内的任何其他变量一样在函数内部使用,并且实际上就像函数内部定义的任何其他局部变量一样。所以你可以像这样使用它们

void printArray(int *array, size_t numElements)
{
    for (size_t i = 0; i < numElements; ++i)
    {
        printf("array[%d] = %d\n", i, array[i]);
    }
}

要调用此函数,您需要传递数组和元素数量,就像将参数传递给任何其他函数(如 scanfprintf):

printArray(arrayTable, i);

请注意,该函数不返回任何内容,这意味着您不能在 printf 或任何其他需要值的表达式中使用它。

当然,您还应该使前向函数原型(prototype)声明与实际函数定义相匹配。

关于c - 将我的数组转换为函数并创建第二个函数来打印它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39610610/

相关文章:

c - 如何将结构添加到结构数组的末尾?

javascript - Vue - 获取没有(事件)的元素调用函数

python - 对 `copy` 的 `numpy.astype` 属性感到困惑

json - ORACLE - JSON 到键值对表

JavaScript Chrome 扩展 : Function is not defined

c - 函数 fscanf 首次使用后使应用程序崩溃

c - 反转列表迭代逻辑错误

javascript - Node ffi 结构变量数组

wordpress - 在 WordPress 中使用 WP_Query 显示某些页面的数组

c++ - 在我的 Naughts and Crosses 游戏中没有人赢