调用函数有问题吗?

时间:2010-07-22 23:46:16

标签: c

如果我有这些功能:

void main(void)
{
    char *menu[] = {"data", "coming", "here"};

    prints(**************); // here

    printf("\n");

}




void prints(char **menu)
{
    int a;
    while(*menu)
    {
        printf("%s", **menu);
        menu ++;
    }

    a = 0;
}

如何调用打印功能???

3 个答案:

答案 0 :(得分:4)

以下是修复了多个问题的版本:

#include <stdio.h>

// declare function before using it
void prints(char **menu)
{
    // make sure parameter is valid
    if (menu != NULL)
    {
        while(*menu)
        {
            // spaces so they don't run together
            // pass *menu not **menu to printf
            printf("%s  ", *menu);
            menu ++;
        }
    }
}

// proper return type for main()
int main(void)
{
    // array terminator added
    char *menu[] = {"data", "coming", "here", NULL};

    prints(menu); // here

    printf("\n");

    // return with no error
    return 0;
}

答案 1 :(得分:0)

在C中,您必须在使用它的另一个函数之前声明您的函数。所以......

void prints(char **menu)
{
    int a;
    while(*menu)
    {
        printf("%s", **menu);
        menu ++;
    }

    a = 0;
}

void main(void)
{
    char *menu[] = {"data", "coming", "here"};
    prints(**************); // here 
    printf("\n");
}

那,或者你可以转发声明函数:

void prints(char **menu);

void main(void)
{
    char *menu[] = {"data", "coming", "here"};
    prints(**************); // here 
    printf("\n");
}

void prints(char **menu)
{
    int a;
    while(*menu)
    {
        printf("%s", **menu);
        menu ++;
    }

    a = 0;
}

答案 2 :(得分:0)

您可以将prints函数移到main之上,也可以将prints的原型放在main之上,如下所示:

void prints(char **menu);

然后,您可以像其他任何功能一样从prints拨打main ...