我的代码为什么运行不起来呢?

我写了三个文件,一个头文件,两个源文件,这个是其中一个源文件
它可以运行,但是效果和我想的不一样,这个运行起来那个框怎么都输不进内容


#define _CRT_SECURE_NO_WARNINGS 1
#include
#include"tou.h"
#include

void menu(int* x,gs* pc) {//px表示地址   *px表示值     而此处是写一个函数,所以px是形参
    int c = 0;
    switch (*x) {
    case 0:
        printf("请选择:1.商家\t2.客户\t\n");
        scanf("%d", x);//此处直接改变地址上的值也可以改变x的值    x已经是地址了,不需要&
    case 1:
        printf("请选择:3.入驻\t4.注销商家\t\n");
        scanf("%d", x);
    case 3:
        zj(pc);
        break;
    case 4:
        sc(pc);
        break;
    case 2:
        dy1(pc);
        printf("请输入需要点单的商家的数字码:");
        scanf("%d", &c);
        dy2(pc,c);
        printf("可以开始点单了");
        break;
    }
}


int main() {
    gs biao1;
    cs(&biao1);//初始结构体
    int x = 0;
    do {
        menu(&x, &biao1);
        printf("退出程序请按0,循环进去程序请按-1:");
        scanf("%d", &x);
    } while (x != -1);
}

我这里使用下面的测试代码,程序是正常运行的,只是修改了下执行的流程,测试如下:

 
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
 
struct gs{
    int id;
    
}; 
  
void zj(struct gs * pc){
    printf("入驻成功!\n");
} 

void sc(struct gs * ps){
    printf("注销成功!\n");
}

void dy1(struct gs * pc){
    printf("dy1\n");
}

void dy2(struct gs * pc,int c){
    printf("dy2");
}

void cs(struct gs * biao){
    biao->id=0;
}

void menu(int* x,gs* pc) {//px表示地址   *px表示值     而此处是写一个函数,所以px是形参

    int c = 0;
    
     printf("请选择:1.商家\t2.客户\t\n");  
    scanf("%d", x);//此处直接改变地址上的值也可以改变x的值    x已经是地址了,不需要&
    
        if (*x==1){
        printf("请选择:3.入驻\t4.注销商家\t\n");
        scanf("%d",x);        
    }
    
    switch (*x) {
                           
        case 3:
            zj(pc);
            break;
        case 4:
            sc(pc);
            break;
        case 2:
            dy1(pc);
            printf("请输入需要点单的商家的数字码:");
            scanf("%d", &c);
            dy2(pc,c);
            printf("可以开始点单了\n");
            break;
    }
   
}
 
 
int main() {
    gs biao1;
    cs(&biao1);//初始结构体
    int x = 0;
    do {
        menu(&x, &biao1);
        printf("退出程序请按0,循环进去程序请按-1:");
        scanf("%d", &x);
    } while (x != 0);
}
 

img

报啥错?
12、15行怎么是scanf("%d",x)呢,40行正确,是scanf("%d",&x)

输入不进内容是什么意思
敲键盘没反应吗