70pice 2017-10-22 01:48 采纳率: 0%
浏览 871

关于输入函数的fputs的一个小疑问

#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;
}
这是整体的源代码,我在运行的时候需要按两次回车才能输出下一步,如图
![图片说明](https://img-ask.csdn.net/upload/201710/22/1508636869_918644.png)图片说明g.ask.csdn.net/upload/201710/22/1508636859_777006.png)但是如果把
while(getchar()!='\n')
{
continue;
}
去除只要按一次回车键就好了。但是会造成一个很严重的程序问题就是当我的输入字符数刚好达到我定的数组最大值,就会造成换行符没有被消除,出现问题。就这个问题请大佬帮我解决一下。我用的是vs2010是不是这个出现问题了?

  • 写回答

1条回答 默认 最新

  • devmiao 2017-10-22 03:26
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog