如何在不在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;
}
答案 0 :(得分:3)
fflush
仅针对输出流定义,fflush(stdin)
调用未定义行为。
您可以查看此内容以放弃缓冲区中的输入:what can I use to flush input?