gets在循环内不能用么?

我写了个代码,遇到点问题,请教下高手们。
#include <stdio.h>
#include <string.h>
int main ()
{
int n;
scanf("%d",&n);
while(n--)
{
int i=0,t=0;
int len =0;
char str[10000];
gets(str);
len=strlen(str);
for(i=0;i<len-3;i++)
{
if(str[i]=='L'&&str[i+1]=='O'&&str[i+2]=='V'&&str[i+3]=='E')
t=1;
}
if(t==1) printf("LOVE\n");
else printf("SINGLE\n");
}
return 0;
}

-----------------------------------------------------------------
这个代码中,先输入n设置循环次数,然后再在每次循环中调用gets函数得到一个字符串,但是当我想输入次数的次数的时候,计算机就直接把它当做gets()的字符串了,请问这是怎么回事啊?
用for 循环+scanf就不会出现这种情况。
求教。

你把前面的scanf("%d",&n);
改成 scanf("%d\n",&n); 就不会了。
这是因为,你在输入数字时,作为结束你会再输入一个回车,
但是 scanf("%d",&n);不会把回车从缓冲里读走,这样,回车就会被你后面的gets()读走,
而gets() 收到回车就会结束。
你在scanf里加一个\n这样就会把回车读走了.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-12
循环次数应该设置一个整形的变量啊 我看看你的输入数据是什么

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网