缓冲,gets()-c语言

为什么在gets(str)后面不用getchar()清空缓冲,里面不是有个换行符吗


    int flag=1;
    while(flag){
        printf("input string:\n");
        gets(str);
        fprintf(fp,"%s",str); 
        printf("continue?");
        char c=getchar();
        if(c=='N'||c=='n')
        flag=0;
        getchar();//清空缓冲 
    }

gets会接收掉换行符的