[英]my function inside of c program does not work
我试图在我的c程序中创建2个单独的函数,第一个程序读取数组(摄影师的名字和他们的积分) ,第二个程序显示所有名称和积分。 (使用printf命令)
但是该程序无法运行我的第二个功能。 我的功能出了什么问题?
提前致谢
#include <stdio.h>
`#include <string.h>`
void readdata(char name[15][15],float points[15]);
void printdata(char name[15][15],float points[15]);
int main ()
{
char names[15][15];
float points[15];
readdata(names,points);
printdata(names,points);
return 0;
}
void readdata(char name[15][15],float points[15])
{
int i;
int n;
printf("Please enter the number of photographers ( The value should be less than 15)\n");
scanf("%d",&n);
while(n<0 || n>15)
{
printf("PLEASE ADD NUMBER BETWEEN 1 AND 15\n");
scanf("%d",&n);
}
for(i=0; i<n;i++)
{
scanf("%s%f", name[i],&points[i]);
}
}
void printdata(char name[15][15],float points[15])
{
int i;
int n;
for(i=0; i<n;i++)
{
printf("%s\t", name[i]);
printf("%.f\n", points[i]);
}
}
在您的printdata()
函数中,变量int n;
未初始化。 变量n
这里,大于变量不同n
您在里面定义readdata()
函数。 这些是局部变量,只能从其各自的功能内访问。
readdata()
应该返回n,而printdata()
应该将其作为参数接收。
您在两个不同的函数中使用n和i并没有全局定义它们,这意味着i的readdata()与print data()中的i不同 。这些是局部变量,局部变量只能在函数中访问,其中你宣布他们。 使用参数在printdata()中传递值,该值将由readdata()返回。
希望能帮助到你。
您的数组大小(为n
值)需要全局定义。 正如@ user9849588所说,局部变量只能从它们各自的函数内部访问。
要解决此问题,您需要将摄影师数量n
传递给readdata
和printdata
函数。
#include <stdio.h>
#include <string.h>
void readdata(char name[15][15],float points[15], int n);
void printdata(char name[15][15],float points[15], int n);
int main ()
{
char names[15][15];
float points[15];
int size;
printf("Please enter the number of photographers ( The value should be less than 15)\n");
scanf("%d",&size);
while(size<0 || size>15)
{
printf("PLEASE ADD NUMBER BETWEEN 1 AND 15\n");
scanf("%d",&size);
}
readdata(names,points,size);
printdata(names,points,size);
return 0;
}
void readdata(char name[15][15],float points[15],int n)
{
int i;
for(i=0; i<n;i++)
{
scanf("%s%f", name[i],&points[i]);
}
}
void printdata(char name[15][15],float points[15],int n)
{
int i;
for(i=0; i<n;i++)
{
printf("%s\t", name[i]);
printf("%.f\n", points[i]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.