当前位置: 代码迷 >> C语言 >> [求助]gets问题(问题已解决)
  详细解决方案

[求助]gets问题(问题已解决)

热度:351   发布时间:2006-10-04 17:10:03.0
[求助]gets问题(问题已解决)
刚才写程序的时候发现的问题
#include"stdio.h"
main()
{char arr[100];
int n,i,j;
printf("输入你想输入数的个数:");
scanf("%d",&n);
getchar();
printf("输入你想输入的数:");
gets(arr);
for(i=0;i<n;i++)
{for(j=i;j<=n;j++)
{
printf("%c ",arr[j]);
}
printf("\n");
}
getch();
}
问题在红色部分,如果去掉,就没法输入东西,以前编通讯录也发生这种问题,问一下为什么gets函数前只要有scanf输入,gets就无法输入呢?

[此贴子已经被作者于2006-10-5 10:15:53编辑过]

搜索更多相关的解决方案: gets  

----------------解决方案--------------------------------------------------------
scanf 接受字符并自动回车
getchar 接受字符不回车
----------------解决方案--------------------------------------------------------
以下是引用sunyuantz在2006-10-4 17:10:03的发言:
刚才写程序的时候发现的问题
#include"stdio.h"
main()
{char arr[100];
int n,i,j;
printf("输入你想输入数的个数:");
scanf("%d",&n);
getchar();
printf("输入你想输入的数:");
gets(arr);
for(i=0;i<n;i++)
{for(j=i;j<=n;j++)
{
printf("%c ",arr[j]);
}
printf("\n");
}
getch();//这里是getchar()吧
}
问题在红色部分,如果去掉,就没法输入东西,以前编通讯录也发生这种问题,问一下为什么gets函数前只要有scanf输入,gets就无法输入呢?

一般用getchar();的时候会用C++里的fflush(stdin);清除缓存


----------------解决方案--------------------------------------------------------
是不是scanf的回车被gets接受了所以无法录入,而用了getchar 吃掉回车后而他本生不产生回车,所以就可以输入了?
----------------解决方案--------------------------------------------------------
right
----------------解决方案--------------------------------------------------------

谢谢unicorn,还有

[QUOTE]一般用getchar();的时候会用C++里的fflush(stdin);清除缓存[/QUOTE]
我用的是win-tc所以最后要加getch()


----------------解决方案--------------------------------------------------------

缓冲区残余信息问题.

一个好的习惯:没事多看旧贴,我可以说负责地说一句,95%的问题在这里以前的贴子里不止一次开贴讨论过.


----------------解决方案--------------------------------------------------------

谢谢提醒,我知道了


----------------解决方案--------------------------------------------------------
  相关解决方案