c为循环跳转优先
这是代码。问题是,当程序在循环中运行时,它会自动填充第一个单词。如果我写2。三,。单词aaaa和bbbb-输出类似于: 1字: 2字:aaaa 三字:bbbbc为循环跳转优先,c,C,这是代码。问题是,当程序在循环中运行时,它会自动填充第一个单词。如果我写2。三,。单词aaaa和bbbb-输出类似于: 1字: 2字:aaaa 三字:bbbb intmain(){ 整数i,n,g,d,计数; char Vir[50][20]char temp[50]; printf(“Juris Kondrats | | | | 111RDB271 | | | | 3.grupa | | | 3.variants\n”); printf(“输入字数:\n”); scanf(“%d”和“&g”)
intmain(){
整数i,n,g,d,计数;
char Vir[50][20]char temp[50];
printf(“Juris Kondrats | | | | 111RDB271 | | | | 3.grupa | | | 3.variants\n”);
printf(“输入字数:\n”);
scanf(“%d”和“&g”);
printf(“您需要插入10个单词,最多10个单词长\n”,g);
printf(“按回车键”);
getche();
系统(“cls”);
对于(i=0;i我认为问题可能是由于“按enter”提示后输入流中剩余的额外字符。即换行
我认为您使用的是Windows平台,因为您正在发出cls
system命令
因此,“回车”键将被转换为回车符和换行符
第一个是使用scanf
读取整数。之后用户必须按ENTER键,但这些字符不会从输入中删除。我希望它会直接跳过“press ENTER”提示,因为流中有字符(其中两个)
第一个将被getche()
删除,第二个将直接进入第一个gets
调用,告诉它您刚刚到达一行的末尾,因此用户输入了一个空字符串
反正是这样的
解决此问题的一个蹩脚方法是在“按enter”提示符下使用gets
而不是getche
,然后只给它任何旧的字符串区域进行写入(不管怎样,您都会忽略结果)。这不是一个好的解决方案,但此时任何更复杂的操作都可能会让您感到困惑。永远不要使用gets()
函数。它无法安全使用,因为它无法防止存储的数据超过目标阵列的容量。
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]);
}
....