【发布时间】:2018-07-04 02:11:00
【问题描述】:
我正在尝试创建两个单独的函数,一个用于读取数组,另一个用于打印它。 我的代码如下所示:
#include <stdio.h>
#include <stdlib.h>
void read(int n, int v[100])
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&v[i]);
}
}
void print(int n, int v[100])
{
for(int i=0;i<n;i++)
{
printf("%d",v[i]);
}
}
int main()
{
int v[100];
int n;
read(n,v);
print(n,v);
}
但如果我读到这样的东西
5
1
2
3
4
5
它打印这个:
12345167773430408951321408978481140419686004089785612740906704021677734340894
和其他数字。有什么建议吗?
【问题讨论】:
-
read() 没有在 main 中设置 n 的值——它设置了一个本地副本。你需要让 read 接受一个指针并传入 &n。
-
read(n,v);和print(n,v);正在使用 未初始化变量n。 -
您可能希望在数字之间打印一些空格。
%d不打印任何内容。 -
@LeeDanielCrocker 说了什么。或者只是让
read()返回计数而不是使用指针参数。 -
在
void print中打印的数组int v[100];也未初始化。请理解函数中定义的局部变量具有不确定的值。
标签: c arrays function printf scanf