2011-04-06 64 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