这是代码。问题是,当程序运行循环时,它会自动填充第一个单词。如果我写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]);
}
....
谢谢,任何帮助!
答案 0 :(得分:0)
我预计问题可能是由于'按Enter'提示后输入流中剩余的额外字符。即,换行。
我认为您使用的是Windows平台,因为您正在发出cls
系统命令。
因此,'enter'键将被转换为回车符和换行符。你有两个潜在的问题。
首先,您使用scanf
来读取整数。用户必须在此之后按ENTER键,但不会从输入中删除这些字符。我希望它会直接跳过“按下输入”提示,因为流中有字符(其中两个)。
第一个将被getche()
删除,第二个将直接进入第一个gets
来电并告诉您刚刚到达一行的末尾,因此用户已输入空字符串。
无论如何都是这样的。
解决此问题的一种蹩脚方法是在“按Enter”提示符下使用gets
而不是getche
,只需给它任意旧字符串区域写入(您将忽略结果无论如何)。这不是一个好的解决方案,但在这一点上任何更复杂的事情可能会让你感到困惑。