scanf("%d", k),
创新互联建站是专业的信丰网站建设公司,信丰接单;提供成都网站制作、成都网站建设、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行信丰网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
当输入字符的时候,输入缓存内没有数字,scanf就读取不成功,k仍然保留了原来的值,下次再次调用scanf时,由于输入缓存中仍然还残留上次输入的字符,所以仍然读取不成功,k仍然保留原来的值。用fflush(stdin)清空一下缓存就可以了。
void showNumber(seat * seats)
{
int k = 0;
do{
int count = 0;
for (int i = 0; i 12; i ++) {
if (seats[i].flag == 0) {
count ++;
}
}
printf("还有%d个空座位\n",count);
printf("\n刷新信息,请输入1;返回主菜单输入2\n");
fflush(stdin); /*这里清空一下缓存*/
scanf("%d",k);
}
while (k != 2);
}
请静心,仔细阅读:
int seat; //定义整型变量,变量名为seat
void printList(struct LNode* L);
// 声明函数,函数名printList,无返回值;函数有1个形参,为结构指针,
void insertYouXu(struct LNode* L,struct LNode* Elem);
// 声明函数,函数名insertYouXu,无返回值;函数有2个形参,为结构指针,
struct LNode *prior(struct LNode* L,struct LNode* p);
// 声明函数,函数名prior,返回值为结构指针;函数有2个形参,为结构指针,
void insertYouXu(struct LNode* L,struct LNode* Elem);
// 声明函数,函数名insertYouXu,无返回值;函数有2个形参,为结构指针,
typedef struct LNode //自定义类型,typedef为关键字,struct LNode 为结构类型,有4个成员项
{//用于通讯录结点
int number; //成员项,为整型
double telenum; //成员项,为双精度
char name [20]; //成员项,为一维字符数组
struct LNode *next; //成员项,类型为struct LNode ,递归结构
}LNode,*LinKList; //定义类型,LNode为节点;*LinKList为指针
你的
代码
不全,我只能给你分析一下这种情况常见的错误了。
1、要返回
数组
定义
在子
函数
中。在函数体内部定义的数据
变量
,如果未加修饰符(static和extern),那么她是局部的,函数执行完毕之后
内存
释放,造成你访问
错误
。你
下边
的那个例子定义的数组是
全局变量
,先不说了下班了晚上补充
这段代码是表示要找的数存在arr中的位置,而数组的下标是从0开始的,如果seat=0;那么要找的数的位置与数组下标就不对应了
你在执行时为scanf("%d", n)函数输入数据时肯定要有个回车,表示给n的数字输入完毕,但scanf()这函数只接收数字,却把'\n'留在了缓冲区。当碰到gets()时它却把这个'\n'接收了;刚好这又是回车符,它以为你把字符串已经输入完了……解决办法是在gets(aplane[n - 1].name);前加一句getchar()把那个该死的'\n'收留了,但不赋给任何变量。这样应该无问题了……
供参考,希望有帮助……