0

我是 C 的新手,到目前为止它非常不同。不过,我正在尝试使用 scanf 和 switch 语句从主函数调用一个函数,但是我不相信我调用的函数正在运行。

int main(void)
{
    int Example_number = 0;
    bool Continue = true;
    char ch;

    while(Continue)
    {
        printf("Which example would you like to run?\n");
        scanf("%d",&Example_number);

        switch(Example_number)
        {
        default: printf("No such program exists.\n");
                 break;
        case 1:  void Various_test();
                 break;
        }

        printf("Would you like to test another?(Y/N)\n");
        scanf("\n%c",&ch);
        if(ch == 'Y' || ch == 'y')
        {
            NULL;
        }
        else
        {
            Continue = false;
        }
    }
}

void Various_test(void)
{
    int k = 2;
    printf("\n%d",k);
}

如果输入为 1,我希望程序打印 2,但是 while 循环只是重复。

感谢您考虑这个问题。

4

2 回答 2

4

void Various_test()是函数的前向声明。叫它你真的只是想要Various_test()。您实际上可能需要前向声明(取决于您的编译选项)。在那种情况下放在void Various_test();上面main

于 2013-02-02T00:34:16.500 回答
1

您可以执行以下两项操作之一:

在 main 开头添加函数声明,如下所示:

int main(void)
{
    void Various_test(void);
    ...

或者,将Various_test 的函数定义移到main 之前,如下所示:

void Various_test(void)
{
    int k = 2;
    printf("\n%d",k);
}

int main(void)
{
    int Example_number = 0;
    ...

无论您选择哪种方式都一样。正如您现在所拥有的那样,编译器不知道Various_test 函数。无论哪种方式都告诉编译器有一个名为Various_test的函数,这就是它的样子。

还有一件事,你在你的 switch 语句中调用了各种各样的测试错误:

case 1:  void Various_test();

应该:

case 1:  Various_test();
于 2013-02-02T01:14:41.320 回答