c - fgets() 如何从 stdin 读取数据?

标签 c stdin fgets

因此,如果我必须使用 fgets() 两次来从键盘读取两个不同的输入,我应该指定两个不同的缓冲区还是只重复使用同一个缓冲区?有什么不同?

使用相同的缓冲区:

   char buffer[100];
   fgets(buffer, sizeof(buffer), stdin);
   fgets(buffer, sizeof(buffer), stdin);

对不同的输入使用不同的缓冲区:

   char buffer_x[100];
   char buffer_y[100];
   fgets(buffer_x , sizeof(buffer_x), stdin);
   fgets(buffer_y , sizeof(buffer_y), stdin);

最佳答案

答案取决于您的用例。根据您的逻辑的保留要求,这两种用法可能同样有效或无效。

  • 如果你的程序的控制流是这样的

    read first input
     process first input, never need it after this
    read second input
     carry on
    

    那么您可以使用第一种方法,重复使用相同的缓冲区。

  • 如果您在读取第二个输入后仍必须使用第一个输入,则需要保留第一个输入,例如

    read first input
     process first input, but need it later also
    read second input
     carry on 
     do something with first and second inputs
    

    然后,您需要单独的缓冲区。

关于c - fgets() 如何从 stdin 读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551395/

相关文章:

R使用system()将数据帧传递到另一个程序

c# - 无法使用 7-Zip 压缩标准输入并使用标准输出输出?

c - 如何正确扫描结构中定义的缓冲区?

c - 如何在 C 中检索数据而不是整行?

c - Obj-C 方法 : calling with parameters

c - 修复 "An invalid parameter was passed to a function that considers invalid parameters fatal"

r - 以批处理模式执行 R 代码时的用户输入

c - 从 C 中的 fgets() 获取乱码输出

Code_Cave 示例 C 编程

Sublimetext for C/C++ 中的条件语法突出显示