【发布时间】:2014-10-24 18:57:00
【问题描述】:
我正在遍历一个循环。在第一次迭代中,我可以在标准输入上写入并获取我想要的数据。在第二个操作中:name 被跳过,它要求我输入 name2。为什么跳过名字?
for (i = 0; TRUE; i++) {
printf("> nom :");
fgets(items[i].name, 15, stdin);
printf("nom: %s\n", items[i].name);
if (items[i].name[0] == '.') break;
printf("> prenom : ");
fgets(items[i].name2, 15, stdin);
printf("name2: %s\n", items[i].name2);
}
【问题讨论】:
-
printf("stdin: %s\n", stdin);-->stdin是FILE *,而不是char * -
是的,我添加这个只是为了随机测试。没有得到任何解决方案。知道可能是什么问题@AlterMann
-
你之前有没有碰巧打电话给
scanf()?这是混合面向行和面向场的输入时的常见症状,您最终会得到一个额外的\n在stdin上等待您。 -
不知道,给我们看一个完整可编译的代码
-
@AlterMann 代码是一个大问题的一部分 我有一个结构 ITEM (char[20] name, char[30] lastname) 我正在通过读取标准输入来填充一个 ITEM 数组。可以用scanf,但是老师要我们用fgets