对于给定的一个字符串,统计其中数字字符出现的次数。

2024-12-20 21:55:51
推荐回答(2个)
回答1:

#include "stdio.h"
#include "string.h"
int main()
{
char s[101];
int i,n=0;
gets(s);
for(i=0;i<=strlen(s);i++)
if(s[i]>='0'&& s[i]<='9')
n++;
printf("%d\n",n);
return 0;

}

回答2:

fflush只能针对输出流,对输入流来说无作用。所以问题就很明显了。
scanf不会读入换行符\n,因此\n被留在了输入流里
而gets会在遇到第一个换行符时返回,所以他返回了一个空字符串
而gets不会像scanf一样把换行符留在输入流里,而是丢弃掉,所以之后就会没问题了

补充:
fflush接收的参数尽管是文件指针,但标准输入是无效的,你可以给他,但他不会做任何事,标准就是这样规定的,输入流不可能被刷新

因为对于输出流来说,刷新意味着立刻把缓冲区内的信息输出到文件或屏幕或其他地方,但对于输入流来说,刷新缓冲区要把数据输出到哪里?

这个函数并不是清空的意思,而是立即清空缓冲区并把其中的内容送到他们该去的地方,因此必须有地方可去他才会工作。丢弃数据的事情,是由你来做的,而不是标准库。