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

标签 c loops buffer fgets

我正在循环迭代。在第一次迭代中,我可以在标准输入上写入并获取我想要的数据。在第二个操作中: 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);
    }

最佳答案

即使在循环的第一次迭代中,您提供的代码也不会提示输入名称。如果您收到任何提示,那么这就是在进入循环之前发生的。相反,所提供的代码确实提示输入 name2

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

关于c - 为什么 fgets() 在循环中被跳过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554496/

相关文章:

buffer - 在 Rust 中创建字节缓冲区

c - "array of pointers"中指针的初始值是多少?

r - 如何创建具有自己名称的新多项式变换变量

c - 为什么 gdb 将 sqrt(3) 评估为 0?

r - 我想对许多数据框进行关联

java - 让程序连续循环

c - 字 rune 件和 block 文件的区别

javascript - nodejs 将原始图像数据写入 jpeg 文件?

c - 递归分而治之技术

c - 3维数组的分配