#include
#include
#define size 10
char * s_gets(char *,int );
int main()
{
char targetarr[size];
printf("输入目标字符串,在三十个字符之中\n");
while(s_gets(targetarr,size)!=NULL&&targetarr[0]!='\0')
{
printf("你想查找什么字符呀\n");
char ch=getchar();
if(strchr(targetarr,ch))
{
printf("进攻有效\n");
}
else
{
printf("犯规了朋友\n");
}
while(getchar()!='\n')
{
continue;
}
printf("输入目标字符串,在三十个字符之中\n");
}
}
char * s_gets(char *ptr,int n)
{
char * fptr;
char * find;
fptr=fgets(ptr,n,stdin);
if(fptr)
{
find=strchr(ptr,'\n');
*find='\0';
}
while(getchar()!='\n')
{
continue;
}
return fptr;
}
这是整体的源代码,我在运行的时候需要按两次回车才能输出下一步,如图
g.ask.csdn.net/upload/201710/22/1508636859_777006.png)但是如果把
while(getchar()!='\n')
{
continue;
}
去除只要按一次回车键就好了。但是会造成一个很严重的程序问题就是当我的输入字符数刚好达到我定的数组最大值,就会造成换行符没有被消除,出现问题。就这个问题请大佬帮我解决一下。我用的是vs2010是不是这个出现问题了?