如何刷新i / o流?我使用scanf(),fflush(stdin)不起作用

时间:2012-09-27 13:43:41

标签: c input stream scanf

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

#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;
}

1 个答案:

答案 0 :(得分:3)

fflush仅针对输出流定义,fflush(stdin)调用未定义行为

您可以查看此内容以放弃缓冲区中的输入:what can I use to flush input?