为什么在循环中跳过fgets()?

时间:2014-10-24 18:57:01

标签: c loops buffer fgets

我在迭代循环。在第一次迭代中,我可以在stdin上写入并获取我想要的数据。在第二个操作:名称被跳过,它要求我输入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);
    }

1 个答案:

答案 0 :(得分:0)

即使在循环的第一次迭代中,您提供的代码也不会提示name。如果你得到任何提示,那么在进入循环之前就会发生这种情况。相反,提供的代码会提示name2

循环的每次迭代都从读取下一个name(不提示)并打印它开始。如果您看到不同的行为,那么您正在运行不同的代码。