C语言 如何在函数之间跳转

jjjwad0x  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(142)

我试图使一个购物复杂,但我不能在函数之间跳转,我已经尝试后藤语句,继续一切请帮助一切都会工作
这是我的准则

#include <stdio.h>
int Verify;
struct Worker
{
    int ID;
    int Password;
}i;

void Workers_data()
{
    struct Worker Sahaj;
    struct Worker Sparsh;
    struct Worker Ramu;
    struct Worker Shamu;

    strcpy(Sahaj.ID,1);
    strcpy(Sahaj.Password,951);
    strcpy(Sparsh.ID,2);
    strcpy(Sparsh.Password,223);    
    strcpy(Ramu.ID,3);
    strcpy(Ramu.Password,2334);
    strcpy(Shamu.ID,4);
    strcpy(Shamu.Password,142);
}

void login()
{
    printf("||||||||||||||||Welcome are you a Customer or a Worker|||||||||||||||||||");
    prinf("Press 1 for Worker and 2 for Customer\n")
    scanf("%d",Verify);
    if (Verify = 1)
    {
        goto Batman;
    }
    else if (Verify = 2)
    {
        goto Superman;
    }
    
}

void Batman()
{
    prinf("Please write your id below\n");
    scanf("%d",&i.ID);
    printf("Please write your password below\n");
    scanf("%d",&i.Password);
}

请先帮我谢谢

bmvo0sr5

bmvo0sr51#

我认为为了将控制权转移到其他函数上,你只需要像这样调用它:

if (Verify == 1)
    {
        Batman();
    }
    else if (Verify == 2)
    {
        Superman();
    }

这里不需要后藤,但是你需要给函数传递参数,这样它才能处理这些值。
您的代码有一些问题:
1.)在比较时,您使用的是=而不是==
2.)scanf("%d", Verify);您需要在此处传递地址:&Verify
3.)您还没有声明任何用于获取输入的结构变量/数组。您还应该在Batman()中通过scanf获取输入的位置为其添加一个变量/数组:

i workers[100];
  int nWorkers;

4.)printf方法的一些错别字。
5.)不使用typedef创建结构别名:

typedef struct Worker
{
    int ID;
    int Password;
}i;

6.)Superman()方法似乎没有在任何地方定义(也许你的代码还在WIP中),但是Batman()可以这样改进:

void Batman()
{
    printf("Please write your id below\n");
    scanf("%d",&workers[nWorkers].ID); // Initialize it to zero in main()
    printf("Please write your password below\n");
    scanf("%d",&workers[nWorkers].Password);
    nWorkers++;
}

相关问题