-3

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

1个字:

2字:aaaa

三字: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]);

}      
....

谢谢你的帮助!

4

1 回答 1

0

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

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

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

第一个是你scanf用来读取整数的。之后用户必须按 ENTER,但这些字符不会从输入中删除。我希望它会直接跳过“按 Enter”提示,因为流中有字符(其中两个)。

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

反正是这样的。

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

于 2012-12-16T23:11:49.973 回答