我的void函数返回一个值,但不返回main函数。

时间:2017-03-18 11:26:24

标签: c function return void

我正在编写一个程序,要求飞行员输入坐标。然后,稍后在其他函数中使用这些坐标,例如计算平面的距离和角度

这是我的主要功能:

    int main()
{
    plane_checker();
    double angle_finder(int x, int y);
    double distance_plane(int x, int y, int z);
    void ils_conditions();
}

我的plane_checker()函数是:

plane_checker()
{
    printf("Please enter your identification code:");
    scanf("%s", &plane_name[0]);

    if( (plane_name[0]== 'j') || (plane_name[0]== 'f') || (plane_name[0]== 'm') || (plane_name[0]== 'J') || (plane_name[0]== 'F') || (plane_name[0]== 'M'))
    {
        printf("Sorry, we are not authorized to support military air vehicles.");;
    }
    else
    {
        printf("Please enter your current coordinates in x y z form:");
        scanf("%d %d %d", &x, &y, &z);

        if(z < 0)
        {
            printf("Sorry. Invalid coordinates.");
        }

    }
    return;
}

用户输入坐标后,我希望程序返回主函数并继续执行其他功能。但是,当我运行程序时,我的函数返回输入的z值并结束程序。如下所示:

Please enter your identification code:lmkng
Please enter your current coordinates in x y z form:1 2 2

Process returned 2 (0x2)   execution time : 12.063 s
Press any key to continue.

这可能是什么原因?我一字一句地检查了我的程序,但找不到这背后的原因?我错过了什么?

提前多多谢谢你!

2 个答案:

答案 0 :(得分:2)

启用警告(-Wall),它会告诉您plane_checker,因为您没有在声明中指定它具有隐式int返回值。

test.c:1:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
plane_checker()
^

您还会收到许多关于未声明变量的警告和错误:x,y,z和plane_name。解决所有问题。如果它们是全局的,那么它们就不应该是。

  

“我希望程序返回主函数并继续使用其他函数。”

这些不是函数调用,它们是函数的前向声明。函数调用类似于angle_finder(x, y)

我很遗憾地说您的代码存在错误。我建议你退后一步,阅读更多有关C语言编程的资料。

答案 1 :(得分:1)

如果你不希望你的函数返回任何东西,就像这样定义它

void plane_checker()
{
    printf("Please enter your identification code:");
    scanf("%s", &plane_name[0]);

    if( (plane_name[0]== 'j') || (plane_name[0]== 'f') || (plane_name[0]== 'm') || (plane_name[0]== 'J') || (plane_name[0]== 'F') || (plane_name[0]== 'M'))
    {
        printf("Sorry, we are not authorized to support military air vehicles.");;
    }
    else
    {
        printf("Please enter your current coordinates in x y z form:");
        scanf("%d %d %d", &x, &y, &z);

        if(z < 0)
        {
            printf("Sorry. Invalid coordinates.");
        }

    }

}

但是你无法在plane_checker函数之外操作插入的数据。您应该从plane_checker()返回插入的数据或使用指针。 https://www.tutorialspoint.com/cprogramming/c_pointers.htm