我写了三个文件,一个头文件,两个源文件,这个是其中一个源文件
它可以运行,但是效果和我想的不一样,这个运行起来那个框怎么都输不进内容
#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);
}
报啥错?
12、15行怎么是scanf("%d",x)呢,40行正确,是scanf("%d",&x)
输入不进内容是什么意思
敲键盘没反应吗