|
9
|
| dmckee --- ex-moderator kitten · 技术社区 · 17 年前 |
|
|
1
2
看看谢天祥的网页 User Input . 如果你想知道确切的条款,可以给作者发电子邮件。 |
|
|
2
16
我很困惑。 我查看了链接,阅读了描述,这是一个很好的实用程序。 但是,您是说不能将这个函数重写为spec吗?规格似乎很清楚, 在这里:
15分钟,我已经10年没写过C了。它稍微打破了getline协定,因为它只检查lineptr是否为空,而不是空,n==0。如果你愿意的话,你可以解决这个问题。(另一个案例对我来说没有什么意义,我想你可以退回-1个案例。) 用变量替换'\n'以实现“getdelim”。 人们还会写代码吗? |
|
3
3
WillHartung的代码有一个非常严重的问题。
|
|
|
4
2
如果您正在为BSD编译,请使用 fgetln 相反 |
|
|
5
2
使用netbsd提供的这些可移植版本: getdelim() 和 getline() 这些来自pkgsrc中的libnbcompat,在每个文件的顶部都有一个bsd许可证。这两者都需要,因为getline()调用getdelim()。获取两个文件的最新版本。请参见每个文件顶部的BSD许可证。修改文件以适合您的程序:您可能需要在其中一个头文件中声明getline()和getdelim(),并修改这两个文件以包括头文件而不是nbcompat头文件。 此版本的getdelim()可移植,因为它调用fgetc()。相反,来自libc(如bsd libc或musl libc)的getdelim()可能会使用该libc的私有特性,因此它不会跨平台工作。 从那以后的几年里 POSIX 2008 specified getline() ,更多的Unixish平台添加了getline()函数。很少会缺少getline(),但它仍然可以在旧平台上发生。一些人尝试在旧平台(如PowerPC Mac OS X)上引导netbsd pkgsrc,因此他们希望libnbcompat提供缺少的posix函数,如getline()。 |