2011-04-06 78 views
5

我剛剛發現原來是GNU擴展的getline()函數現在是POSIX 2008標準的一部分。POSIX實現的狀態

是否對該版本的POSIX支持的範圍有一些概述?

+2

+1抽出時間來質疑什麼是可移植的 – 2011-04-06 12:34:48

回答

2

我會繼續使用它。可以實現getline(但不是更強大的getdelim)作爲圍繞fgets的非常快速/高效的包裝,因此如果您願意將其作爲後備,則使用getline並不會使您的程序變得更加便於攜帶。 (而不是像使用__fpending,不能移植地實現,需要實現特定的黑客模仿。)

而且,當然,無論getlinegetdelim可以簡單地對flockfile/funlockfilefgetc基礎上實現的。這不是非常有效,但它可以在任何地方工作。

+1

'getdelim'和'getline'也可以在'fscanf'的頂部使用'%200 [^ x]'轉換說明符來實現,其中'x'被替換用你想要停止的分隔字符和200的緩衝空間量。 (你可以使用'snprintf'和'%%% zu [^%c]'來產生這個轉換說明符。) – 2011-05-04 15:18:24