我正在尝试编写一个程序来使用不同的函数接受和显示一个数组,但我无法打印该数组

I'm trying to write a program to accept and display an array using diffrent functions, but I'm unable to print the array

我记下的代码:

#include<stdio.h>
#include<stdlib.h>


void get()
{
    int i,a[50],limit;
    printf("enter the limit:");
    scanf("%d",&limit); 
    
    printf("enter the array");
    for(i=0;i<limit;i++)
    {
        scanf("%d",&a[i]);
    }
    
}

void display()
{
    int i,a[50],limit;
    printf("the array is");
    for(i=0;i<limit;i++)
    {
        printf("%d\t",a[i]);
    }

}

int main(void)
{
   int i,a[50],limit;
   get(); 
   display(); 
   
}

输出:

enter the limit:5
enter the array1
2
3
4
5
the array is1   2       3       4       5       7143534 7209061   7536756 6488156 7077985 2949228 7471201 3019901633014777  7864421 101     0       0       -707682512      32767     -317320272      573     -690587167      32767   -317320288        573     -317325312      573     47      064       0       0       0       4       0       0       0-317325312       573     -690580068      32767   -31732531573      2       0       47      0       64      51      -1799357088       125     961877721       32758   3       32758     961957944       32758   -317168624      573     -706746576        32767

当您在每个函数中声明 int i,a[50],limit; 时,这些变量是函数的 local

例如 get 中声明的 limit 变量与 set 中声明的 limit 变量完全无关等等。它们只是碰巧具有相同的名称。

您需要将这些变量声明为全局变量(糟糕的设计),或者以不同的方式重新设计您的代码,例如将这些变量作为参数传递。

所有这些都在您的初学者 C 教科书的第一章中进行了解释。

使用全局变量的示例(糟糕的设计)

#include <stdio.h>
#include <stdlib.h>

int i, a[50], limit;   // global variables visible
                       // from all functions

void get()
{
  printf("enter the limit:");
  scanf("%d", &limit);

  printf("enter the array");
  for (i = 0; i < limit; i++)
  {
    scanf("%d", &a[i]);
  }
}

void display()
{
  printf("the array is");
  for (i = 0; i < limit; i++)
  {
    printf("%d\t", a[i]);
  }
}

int main(void)
{
  get();
  display();
}