c首先循环跳转

时间:2012-12-16 22:53:46

标签: c

这是代码。问题是,当程序运行循环时,它会自动填充第一个单词。如果我写2.和3.字aaaa和bbbb - 输出就像:

  

1字:

     

2字:aaaa

     

3字:BBBB

 int main(){
      int i,n,g,d,count;
            char Vir[50][20] char temp[50];

printf("Juris Kondrats ||| 111RDB271 ||| 3.grupa ||| 3.variants\n");
printf("enter amount of words: \n");
scanf("%d", &g);
printf("you need insert 10 words max 10 words long\n",g);
printf("press enter");
getche();

system("cls");

for(i=0;i<g;i++)
{
     printf("\ninsertt %d-o word\n",i+1);
     gets(Vir[i]);

}      
....

谢谢,任何帮助!

1 个答案:

答案 0 :(得分:0)

我预计问题可能是由于'按Enter'提示后输入流中剩余的额外字符。即,换行。

我认为您使用的是Windows平台,因为您正在发出cls系统命令。

因此,'enter'键将被转换为回车符和换行符。你有两个潜在的问题。

首先,您使用scanf来读取整数。用户必须在此之后按ENTER键,但不会从输入中删除这些字符。我希望它会直接跳过“按下输入”提示,因为流中有字符(其中两个)。

第一个将被getche()删除,第二个将直接进入第一个gets来电并告诉您刚刚到达一行的末尾,因此用户已输入空字符串。

无论如何都是这样的。

解决此问题的一种蹩脚方法是在“按Enter”提示符下使用gets而不是getche,只需给它任意旧字符串区域写入(您将忽略结果无论如何)。这不是一个好的解决方案,但在这一点上任何更复杂的事情可能会让你感到困惑。