簡體   English   中英

未知字符串長度的fgets

[英]fgets for unknown string length

如何使用fgets從未知長度的鍵盤緩沖區讀取字符串? *fgets(char *s, int size, FILE *stream);

我可以在int大小的位置給fgets一個NULL嗎?

不,您需要知道什么是行終止符(通常是換行符和/或回車符),並一直循環閱讀直到獲得為止。 當然,您還需要增加緩沖區並在獲取緩沖區時將其復制到其中。

如果有,POSIX的getline()執行此操作。

fgets的length參數是功能比gets “好”的原因之一。 您絕對必須指定要傳遞的緩沖區可以容納的數據量,否則您的應用程序可能會崩潰。

在我的大多數應用程序中,只要滿足我希望接收的任何內容,我只會使用幾次緩沖區。

使用getline可能會導致malloc / realloc,如果使用動態內存沒有問題,請隨時使用該函數。 我更喜歡簡單的buffer[MAX_SIZE+1]變量。

暫無
暫無

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

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