如果stdio.h中缺少"getline"函数,在哪里/如何获取?

Bla*_*tar 5 c gcc codeblocks getline

我正在使用Windows 8上的Code :: Blocks 13.12在C中编写程序(C编译器是mingw32-gcc).我想使用"getline"函数,但似乎缺少stdio.h.除了编写自己的实现之外,有没有办法获得它?

rub*_*nvb 8

getline是POSIX函数,Windows不是POSIX,因此它没有一些POSIX C函数可用.

你需要自己动手.或者使用已经编写过的.


Joh*_*ode 5

getline不是标准 C 库函数。一些实现(例如gcc)将其作为扩展提供。

如果您使用 gcc 进行编译,则需要定义功能宏_GNU_SOURCE才能使其可用于您的代码:

#define _GNU_SOURCE
#include <stdio.h>
...
getline (...);
Run Code Online (Sandbox Code Playgroud)

编辑

希望由于 mingw 是一个 GNU 编译器,因此您应该可以在 Windows 上使用它。

  • gcc 不提供像 getline() 这样的函数。这些函数来自您平台的 libc。MinGW 使用 Microsoft 的 libc (msvcrt.dll) 和 MinGW 的标头。 (6认同)
  • 不幸的是它似乎不起作用。我什至在 stdio.h 源文件中找不到 getline 。 (3认同)