关于程序中scanf函数失效的解决方法

关于程序中scanf函数失效的解决方法

又是写bug的一天…

在写程序设计进阶课的结课项目时,遇到这样一个bug:

在使用scanf函数读取用户输入时,发现scanf函数被跳过了,无法从键盘输入数据,源代码如下:

//学生信息添加模块
int information_adding_module()
{
          
   
    //函数声明
    int file_check();
    int file_create();

    //变量声明
    char whether_exsit;
    char whether_create;

    //添加学生信息菜单
    system("cls");
    printf("******************************************************************
");
    printf("*                       学生信息维护系统                         *
");
    printf("******************************************************************
");
    printf("当前位置:添加学生信息
");

    whether_exsit=file_check();
    if(whether_exsit==-1)
    {
          
   
        printf("信息文件不存在,是否新建信息文件?(y/n)");
        scanf("%c",&whether_create);
        if(whether_create==y)
        {
          
   
            if(file_create()==1)
                printf("文件创建成功!");
            else
                printf("文件创建失败,请重试!");
        }
}

程序执行到 printf(“信息文件不存在,是否新建信息文件?(y/n)”); 处时,跳过了下一行的 scanf 函数。

查找bug原因,发现与scanf函数的读取方式有关。

解决方法:使用 fflush() 函数清空缓存区。

fflush(stdin);
经验分享 程序员 微信小程序 职场和发展