scanf函数可没有能力直接从键盘读取数据,它仅仅是从标准IO输入缓冲区读取数据而已,而这些缓冲区的数据来自于内核,内核数据才来自于键盘。
拓展:
由于scanf只是读取缓冲区的数据,因此如果数据个数跟scanf约定的不同时,这些数据将被残留在缓冲区内,影响scanf下次的运行,那怎么清空这些不合格的非法输入呢?方法如下:
while(getchar() != 'n');
scanf函数可没有能力直接从键盘读取数据,它仅仅是从标准IO输入缓冲区读取数据而已,而这些缓冲区的数据来自于内核,内核数据才来自于键盘。
拓展:
由于scanf只是读取缓冲区的数据,因此如果数据个数跟scanf约定的不同时,这些数据将被残留在缓冲区内,影响scanf下次的运行,那怎么清空这些不合格的非法输入呢?方法如下:
while(getchar() != 'n');