如何刷新I/o流?I';m使用scanf(),fflush(stdin)不起作用

如何刷新I/o流?I';m使用scanf(),fflush(stdin)不起作用,c,input,stream,scanf,C,Input,Stream,Scanf,如何在不将换行符放入scanf()的情况下刷新输入缓冲区?因为我的教授不喜欢。我试过了;但它不起作用 #include <stdio.h> #include <conio.h> int CountUpper(char S[],int n) { int i,cntr = 0; for(i = 0; i < n; i++) if(S[i] >= 'A' && S[i] <= 'Z') +

如何在不将换行符放入scanf()的情况下刷新输入缓冲区?因为我的教授不喜欢。我试过了;但它不起作用

#include <stdio.h>
#include <conio.h>
int CountUpper(char S[],int n)
{
    int i,cntr = 0;
    for(i = 0; i < n; i++)
        if(S[i] >= 'A' && S[i] <= 'Z')
            ++cntr;
    return cntr;
}
int main(void)
{
    int n,i;
    printf("Enter n: ");
    scanf("%d",&n);
    char array[n];
    for(i = 0; i < n; i++)
    {
        scanf("%c",&array[i]);
        //fflush(stdin);
    }
    printf("Number of uppercase characters in array: %d\n",CountUpper(array,n));
    getch();
    return 0;
}
#包括
#包括
int CountUpper(字符S[],int n)
{
int i,cntr=0;
对于(i=0;i如果(S[i]>=“A”和&S[i]
fflush
仅为输出流定义,并且
fflush(stdin)
调用未定义的行为


您可以对此进行研究以丢弃缓冲区中的输入:

fflush
仅为输出流定义,并且
fflush(stdin)
调用未定义的行为


您可以查看此项以丢弃缓冲区中的输入:

因此无法刷新scanf()?我必须求助于getchar()?是的,您可以使用getchar()来吃掉一个char。因此无法刷新scanf()?我必须求助于getchar()?是的,您可以使用getchar())吃一个字符。搜索“scanfflush”时,可能会重复出现的字符,以及数百个其他字符。搜索“scanfflush”时,可能会重复出现的字符,以及数百个其他字符。