簡體   English   中英

fgets()如何真正從stdin讀取?

[英]How fgets() really works to read from stdin?

因此,如果我必須使用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 

    那么,你需要單獨的緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM