繁体   English   中英

我在c程序中的功能不起作用

[英]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()应该将其作为参数接收。

您在两个不同的函数中使用ni并没有全局定义它们,这意味着i的readdata()与print data()中的i不同 。这些是局部变量,局部变量只能在函数中访问,其中你宣布他们。 使用参数在printdata()中传递值,该值将由readdata()返回。

希望能帮助到你。

您的数组大小(为n值)需要全局定义。 正如@ user9849588所说,局部变量只能从它们各自的函数内部访问。

要解决此问题,您需要将摄影师数量n传递给readdataprintdata函数。

#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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM