神奇宝贝酋雷姆:关于C语言的一个简单的问题,请帮帮我看看这代码有什么问题了

来源:百度文库 编辑:高考问答 时间:2024/05/05 02:05:14
#include "stdio.h"

void main()
{
FILE *p;
char a[50],*fp;
int i;
printf("\t\t英文文章统计程序\n(1)打开文件,载入英文文章\n(2)统计文章中英文的单词数\n(3)统计文章中标点符号数目\n(4)统计文章的句子数目\n(5)统计文章各英文字母出现的频率\n(6)查询文章某个单词出现的次数\n(7)退出\n"); /*主界面*/
scanf("%d",&i);
if(i==1)
{
printf("请输入你要打开的文章:");
gets(a);
}
}

问题是我按下1以后“请输入你要打开的文章之后”就press any key to continue了,怎么gets(a)这个命令没有运行?

因为a接受到了换行符,你在gets(a)前面加一句getchar();把换行符吃掉就行了。

当你按下一个数字或字母时
比如A或1
输入的是A+回车或1+回车
把A或1传给X后
缓存区里还保存着回车的字符
所以当下一个gets()时就把回车赋给了m
你可以把scanf和gets换一下位置

因为gets(a);取得了你前面输入的1后面的换行符
其实是执行了

这个命令已经运行了
你在gets(a);
后加putchar(a[0]);试试看