2023.1.13
数组可以作指针,所以scanf的时候不需要加&
fflush(stdin);/*清除输入缓冲区中的错误内容(fflush()可能带来可移植性的问题)*/
例如:
#include <stdio.h> void main(void) { int a,b,max,data; printf("Input a,b:"); data = scanf(" %d,%d",&a,&b);/*记录scanf()的返回值;*/ if(data!=2)/*根据scanf()的返回值判断输入数据个数或者格式是否错误*/ { printf("格式输入错误!"); fflush(stdin);/*清除输入缓冲区中的错误内容(fflush()可能带来可移植性的问题)*/ } else { max = a>b?a:b;/*三目运算符(a>b值为真则输出a的值,反之输出b的值)*/ printf("%d\n",max); } }
以上代码摘自CSDN
但是本人并没有理解此处的fflush(stdin)的意义,在其他代码中并未体现fflush(stdin)清除缓冲区的作用,后期需抽出世界来进行探究。
清除缓冲区的第二体现:
#include <stdio.h> int main(void) { char password[20] = { 0 }; printf("请输入您的密码:>"); scanf_s("%s", password, 20); printf("请确认您的密码(Y/N):>"); int tmp = 0; while ((tmp = getchar()) != '\n') { ; }//把这个while循环换成getchar()也行但是只能处理 当缓冲区只有一个字符的情况,目的是为了清除\n的缓冲 int ch = getchar(); if(ch == 'Y') { printf("确认成功!"); } else { printf("确认失败!"); } return 0; }
读者可以把while循环或者getchar()删去运行看看结果,来探究清除缓冲区的作用。

浙公网安备 33010602011771号