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()删去运行看看结果,来探究清除缓冲区的作用。

posted @ 2023-01-13 20:06  江理第一深情  阅读(51)  评论(0)    收藏  举报