scanf和getchar执行时被跳过是怎么回事
1、我们咸犴孜稍先来看一种情况。#include <stdlib.h>#include <stdio.h>int main(){ ch锾攒揉敫ar *name,*no; char flag; do{ printf("请输入姓名:"); scanf("%s",&name); printf("请输入学号:"); scanf("%s",&no); printf("\n\n按任意键继续输入,退出请输入q!\n\n"); scanf("%c",&flag); }while(flag != 'q'); return 0;}在逻辑上,这种是不会出错的,那么实际运行情况如何呢?输入学号回车后,直接跳到下一次输入,也就是跳过了scanf("%c",&flag);的执行。

3、单步执行后,没有输入,flag的值被赋值为10,相应的ascii值是回车符。

5、但是,作为一个char类型的变量,用字符串的输入方式虽然程序能正常运行,但是这种做法是不安全的。通过下图我们可以看到每次都只取第一个字母。
