主题:为什么enter函数进入不了循环?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXNAME 40 //名字最大占用长度
#define MAXPhoneNumber 40 //联系方式最大占用长度
#define MAXAMOUNT 100 //通讯录最多储存联系人数量
struct Contact { //录入信息模板
char Name[MAXNAME]; //名字
char PhoneNumber[MAXPhoneNumber];//电话号码
};
struct Contact conBook[MAXAMOUNT]; //结构数组
char * s_gets(char * st, int n); //自定义输入函数,丢弃换行符
void menu(void); //菜单函数
void enter(void); //输入函数
int main(void)
{
int size = sizeof(struct Contact); //一个conBook所占长度
FILE * contact;
s_gets(conBook[0].Name, MAXNAME);
menu(); //输出菜单
int option = 0; //选项初始化为0
while (scanf("%d", &option) && option != 7)
{
switch (option)
{
case 1:
enter();
break;
default:
break;
}
}
printf("%s", conBook[0].Name);
puts("Bye");
return 0;
}
char * s_gets(char * st, int n)
{
char * ret_val;
char * find;
ret_val = fgets(st, n, stdin);
if (ret_val)
{
find = strchr(st, '\n');
if (find)
*find = '\0';
else
while (getchar() != '\n')
continue;
}
return ret_val;
}
void menu(void) //菜单函数
{
printf("***********************************\n");
printf("***** 输入数字进入相应模块:*****\n");
printf("***** 1. 通讯录录入 *****\n");
printf("***** 2. 通讯录查询 *****\n");
printf("***** 3. 通讯录删除 *****\n");
printf("***** 4. 通讯录列表显示 *****\n");
printf("***** 5. 通讯录数据保存 ***** \n");
printf("***** 6. 通讯录数据加载 *****\n");
printf("***** 7. 退出系统 *****\n");
}
void enter(void) //输入函数
{
int count = 0;
puts("请输入联系人姓名:");
while (count < MAXAMOUNT && s_gets(conBook[count].Name, MAXNAME) != NULL && conBook[count].Name[0] != '\0')
{
puts("请输入电话号码:");
scanf("%s", conBook[count].PhoneNumber);
count++;
while (getchar() != '\n')
continue;
if (count < MAXAMOUNT)
puts("请输入下一位联系人姓名:");
}
}